Sublime vs. PyCharm for Python开发

Zek*_*oid 1 python pycharm sublimetext sublimetext2 sublime-text-plugin

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

  1. 在对象之后键入一个句点并获取其所有属性的CORRECT列表(Sublime可以执行此操作,排序,但它返回随机属性)
  2. 在整个项目/文件夹中重构变量
  3. 显示使用它们定义的方法的文档字符串

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

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

Mat*_*DMo 10

如果您正在寻找更好的自动完成功能,请尝试通过Package Control提供的SublimeCodeIntel.索引内置模块和第三方软件包需要一段时间,但一旦准备好它就会非常有用.例如,使用Pandas,我可以定义一个数据帧:

df = pd.DataFrame(some_input_data)
Run Code Online (Sandbox Code Playgroud)

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

"auto_complete_triggers":
[
    {
        "characters": ".",
        "selector": "source"
    }
]
Run Code Online (Sandbox Code Playgroud)

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

UPDATE

虽然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.