具有代码完成功能的python IDE,包括参数对象类型推断

时间:2011-10-14 14:05:51

标签: ide python-3.x type-inference code-completion python-2.7

我已经测试了各种Python IDE的代码完成功能。在下列情况下是否存在可以完成代码的方法:

def foo(x):
    print x.read()  // remove this line, and type in "print x."

def main():
    n = open("c:\\python27\\test.py");
    foo(n)

IDE必须弄清楚foo是在当前模块的某个地方调用的,参数是一个调用open()的返回值,它必须假设是调用file.open,因此,返回一个文件对象。因此,x.后跟Ctrl + Space将调用代码完成并显示x作为文件对象可以支持任何文件对象方法,包括read()

我发现PyScripter可以做到这一点:

    n = open("c:\\python27\\test.py");
    n. // hit <ctrl+space> after n.

上面的代码完成方案是有效的,因为PyScripter做了一些特殊的代码完成逻辑来确定n是一个文件对象,但似乎没有办法从静态分析推断出对象类型或可用方法,推导出参数的类型。

其次,如果Python 2.x中没有这样的东西,在Python 3.x中,现在有静态类型提示,是否有任何IDE支持它们?

   def foo(x:'file'):
        print x.read()  // remove this line, and type in "print x." and hit ctrl+space

2 个答案:

答案 0 :(得分:8)

我认为唯一可以做的就是({差不多)PyCharm

但你必须给它一些提示:

Python2


如果您使用的是Python 3,IDE将检查这样的功能注释:

Python3

(文件类已从python 3中删除,所以我用字符串做了一个例子)

这不是一个免费的IDE,但是,恕我直言有最好的代码完成。

答案 1 :(得分:1)

WingIDE也有这样的类型推断,但它不是开放的。