包含参数对象类型推断的代码完成的python IDE
我已经测试了各种Python IDE的代码完成功能。在以下情况下是否存在可以完成代码的程序:包含参数对象类型推断的代码完成的python IDE,ide,python-3.x,type-inference,code-completion,python-2.7,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的
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
的调用,从而返回一个file对象。因此,x.
后跟Ctrl+Space将调用代码完成,并表明x作为文件对象可以支持任何文件对象方法,包括read()
例如,我发现PyScripter可以做到这一点:
n = open("c:\\python27\\test.py");
n. // hit <ctrl+space> after n.
我认为唯一能(几乎)做到的就是 但你必须给它一些提示:
如果您使用的是Python 3,IDE将检查如下函数注释: (文件类已从Python3中删除,因此我用string做了一个示例)
它不是一个免费的IDE,但是IMHO有最好的代码完成功能。WingIDE也有这样的类型推断,但它不是开放的。第一个是不可能的。foo()可以用任何方法调用。用文件调用它一次并不能保证。类型提示解决了这个问题,但我还不知道有哪种IDE支持它,但我相信它会出现。同意Lennart的观点,这是使用非强类型语言的一个折衷办法。函数注释应该与类型一起使用,而不是与字符串一起使用……谢谢,我不知道它们应该用来装什么,这正是我想要的。我应该猜到可能有人为此使用了函数docstring。它们是美丽的东西,Docstring。我希望能够在一个开源产品中模仿它的DCONSORM解析COFRESPLION,但是现在,我将考虑购买PyTrimk,它看起来很棒。
def foo(x:'file'):
print x.read() // remove this line, and type in "print x." and hit ctrl+space