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

时间:2010-08-14 08:38:15

标签: python ide autocomplete duck-typing built-in

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

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

我惊讶地发现自动完成似乎对内置组件不起作用。例如,如果我在数据文件之后尝试automcomplete:

datafile = open(目录+“/”+帐号,'r') 数据文件。

没有提出有用的方法(例如,实际)。仅限致电

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

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

谢谢,

7 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:4)

只是为了使它保持最新,以便新读者不要对Pydev的当前状态感到困惑 - 你现在给出的例子是Pydev。 (顺便说一下,应该避免在路径上操作 - 改为使用os.path.join)

答案 2 :(得分:1)

  

我很想知道经历了什么   Python开发人员在探索时会做   不熟悉的(内置)模块

我使用ipython。 Ipython是交互式shell的增强版本,可以添加选项卡完成并快速访问对象的doctstring。它还提供了标准shell所没有的许多其他功能 - 您可以找到其功能的摘要here

答案 3 :(得分:0)

这里知识渊博的人可以给你一个详细的答案。这是一个简短的。

动态类型语言的自动完成功能本质上永远不会像静态类型语言那样丰富。例如,在open的情况下,无法确定编写代码时返回类型的内容。与Java之类的静态类型语言不同,方法签名不包括返回类型。因此,IDE无法为您提供任何提示。

你肯定应该在任何Python开发过程中运行REPL。解释语言的一个优点是,您可以在REPL中测试代码的小块。它也是测试你对内置函数和其他模块如何工作的理解的好地方。

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

答案 4 :(得分:0)

你想要IPython。正如丹尼尔上面所指出的,交互式shell是一种更好的方式来探索Python(事实上,大多数其他语言也是如此)。

This可能有助于在OSX上进行设置。

答案 5 :(得分:0)

您可能想看看WingIDE。它可以正确地自动填充您的数据文件。

如果无法推断出类型,可以使用类似

的断言
assert isinstance(datafile, file)

帮助自动完成

答案 6 :(得分:0)

我在工作中使用PyDev,所以我知道你来自哪里。如果您愿意考虑其他工具,请查看JetBrains' PyCharm,这是我自己项目的新首选Python IDE。没有任何从属关系,除非说我会在测试结束时接受它。 :)