1

我使用 ST2 已经有一段时间了,鉴于 python 现在是我的主要语言,我决定尝试 PyCharm。它有点混乱,我对 Sublime 的爱让我远离。然而,PyCharm 能够以某种方式完成以下 Sublime 无法做到的事情:

  1. 在对象之后键入句点并获取其所有属性的正确列表(Sublime 可以这样做,有点,除了它返回随机属性)
  2. 跨整个项目/文件夹重构变量
  3. 显示用它们定义的方法的文档字符串

它有更重要的功能,Sublime 还不能做到。我已经在 Sublime 中安装了许多软件包,除了上面的 3 件事之外,它们几乎可以做 PyCharm 可以做的事情。

回到这个问题:鉴于 Python 不是强类型语言,PyCharm 如何提供此功能?

4

1 回答 1

10

如果您正在寻找更好的自动补全功能,请尝试通过 Package Control 获得的SublimeCodeIntel 。索引您的内置模块和第三方包需要一些时间,但一旦准备好,它就会非常有帮助。例如,使用 Pandas,我可以定义一个数据框:

df = pd.DataFrame(some_input_data)

然后类型df.和对象的所有关联类和方法DataFrame出现。要进行设置,您需要将以下内容添加到您的用户首选项 ( Preferences -> Settings - User):

"auto_complete_triggers":
[
    {
        "characters": ".",
        "selector": "source"
    }
]

以及您可能拥有的任何其他触发器。

更新

虽然 SublimeCodeIntel 是一个不错的软件包,但它并不总是能很好地工作——它有时会在查找新安装的模块时遇到问题,数据库可能会损坏,有时自动完成可能会有明显的延迟,它在使用 virtualenvs 时会遇到问题,有时它只是不起作用。如果您使用的是 Sublime Text 3,我强烈建议您使用Anaconda相反(与 Anaconda Python 发行版无关)。一旦你设置了它(一个非常简短的过程,基本上你只需指定你想使用的 Python 解释器),它就可以工作了。没有要初始化或损坏的数据库,它会自动发现您何时添加了新包,它在后台运行非常不显眼......我不能说太多关于它的好话。它使用 JEDI 自动完成模块等,并且快速准确。它会自动确定类型变量是什么,并使用可以在其上调用的适当方法和类来填充补全。你也可以让它完成参数完成,但这对我来说有点烦人,所以我把它关掉了。它不能做的一件事是方法链接,但没有什么是完美的。它还包括用于代码复杂性检查和 linting 的模块,这很好,但我不需要它,并且只想在我想要 lint 时进行 lint,所以我也将其关闭。它和 SublimeCodeIntel 之间的另一个主要区别是 Anaconda 是 Python 特定的,而 SCI 支持多种不同的语言。

我强烈建议尝试一下 Anaconda。除了方法链接之外,我对它非常满意,并且没有回头。您可以做的一件很酷的事情是为"python_interpreter"项目文件中的设置分配不同的值,这样您就可以轻松使用 virtualenvs,或者(像我一样)为 Python 2 编码打开一个项目,为 Python 3 打开另一个项目。

于 2014-01-22T20:48:07.873 回答