动态语言IDE中的自动完成,特别是PyDev中的Python

Gre*_*reg 4 python ide duck-typing autocomplete built-in

我是Python的新手,具有静态类型语言的背景,包括大量的Java.

在检查功能/流行度等之后,我决定在Eclipse中将PyDev作为IDE.

令我震惊的是,自动完成似乎对内置组件无法正常工作.例如,如果我在数据文件之后尝试automcomplete:

datafile = open(目录+"/"+ account,'r')数据文件.

没有提出有用的方法(例如,实际).只有像打电话的东西.

我习惯于通过跳入类定义并使用大量自动完成来快速查看类将执行的操作来学习语言.我的PyDev'解释器'设置得很好'强制内置'.

使用PyDev可以为内置程序自动完成吗?我是否接近IDE错误,即应该在侧面运行一个解释器并测试它的东西?到目前为止,IDE似乎很弱,例如IDLE在2分钟后在我的新mac上发布了.我很想知道Python开发人员在探索不熟悉的(内置)模块时所做的经验,因为这让我重新考虑我对Python的最初吸引力.我喜欢通过简单的探索学习的语言!

谢谢,

Dan*_*man 9

在我看来,Python shell比依赖IDE更适合探索新模块.不要忘记,在Python中,您可以在shell中执行任何可以在程序中执行的操作,因为没有单独的编译步骤.在shell中,您可以使用dir(x)查找x的所有属性和方法,无论x是模块,类还是其他.

更好的是,增强的iPython shell确实为所有对象提供了标签完成.

事实上,正因为如此,许多Python程序员 - 包括我自己 - 根本不使用IDE,而只是一个简单的文本编辑器(我使用VIM).


小智 5

只是为了保持最新状态,以使新读者不会对Pydev的当前状态感到困惑-您现在提供的示例在Pydev中有效。(顺便说一句,应该避免手动操作路径-改用os.path.join)


Man*_*dan 0

这里有比较懂行的人可以给你详细的解答。这是一个简短的。

动态类型语言的自动完成功能本质上永远不会像静态类型语言那样丰富。例如,open在编写代码时无法确定返回类型是什么。与 Java 等静态类型语言不同,方法签名不包含返回类型。因此 IDE 无法给您任何提示。

在任何 Python 开发过程中,您当然应该运行 REPL。解释型语言的优点之一是您可以在进行过程中在 REPL 上测试一小部分代码。这也是测试您对内置模块和其他模块如何工作的理解的好地方。

我在 Ubuntu 上工作,所以我不知道在 Mac 上运行 IDLE 有多容易或多困难。我通常使用非常方便的iPython来满足 REPL 需求,并使用 Pydev 来进行其他开发(例如 Django)。您可能想尝试一下 iPython。