3

我有以下文件。为什么当我Ctrl-Space在“r.”之后按下时代码完成不运行?它在红色框中显示“没有建议”。

(程序运行和输出:200)

__author__ = 'hape'

import urllib.request
import urllib.response

print("Starting")
r = urllib.request.urlopen("http://www.python.org")

r.  <------------ No code completion, why not?!

print (r.getcode())

之后r.,代码完成没有弹出,为什么?

4

4 回答 4

3

您是否查看过编辑器代码完成设置的 Pycharm 页面?

http://www.jetbrains.com/pycharm/webhelp/editor-code-completion.html

通过启用智能类型代码完成?

http://www.jetbrains.com/pycharm/webhelp/smart-type-code-completion-completing-code-based-on-type-in​​formation.html

于 2013-01-30T19:08:23.380 回答
3

添加来自 JetBrains 的响应:@CrazyCoder 就在那里。问题是我们无法推断函数“urllib.request.urlopen()”的正确返回类型,因为它的实现使用了一些我们无法静态处理的动态技巧,特别是:

通常,我们在 python-skeletons 中使用外部注释来处理困难的情况,但它不包含“urllib.request”模块的类型提示。同样在即将发布的 PyCharm 版本中,我们计划切换到在 typeshed 项目中收集的注释集合。它发展得更加积极,并且已经包含一些“urllib”的注释。要从它们中受益,您只需在解释器路径中的某处放置带有注释的“urllib”包,以便 PyCharm 可以找到相应的 .pyi 存根。

来自 JB 的屏幕截图

于 2016-09-08T19:22:43.077 回答
1

检查 IDE 是否处于省电模式。如果是,则没有代码完成过程或任何其他后台进程起作用

它显示在 IDE 底部的状态栏中

于 2015-11-16T07:56:38.590 回答
0

@CrazyCoder 是对的。现在,Pycharm 不知道r.

如果你真的喜欢自动补全,先获取r使用 IPython 或 debug的类型

# IPython

In [1]: import urllib.request

In [2]: r = urllib.request.urlopen("http://www.python.org")

In [3]: type(r)
Out[3]: http.client.HTTPResponse

然后使用 Python3 注释

r: http.client.HTTPResponse = urllib.request.urlopen("http://www.python.org")
r.  

现在,你可以得到

http.client.HTTPResponse 的 python 注释

于 2017-10-14T12:41:36.840 回答