我在Windows 10上使用PyCharm 2016.1和Python 2.7,并导入了matplotlib模块。
由于matplotlib模块非常广泛,而且我对Python相对较新,我希望PyCharm中的Auto Complete函数可以帮助我概述对象的现有属性/函数。这将是更方便的挖掘通过API文档的每一次,不知道要寻找什么和在哪里找到它。
举例来说:
from matplotlib import pyplot as plt
fig, ax = plt.subplots()
字符串
当我输入ax.
时,属性、函数等没有自动完成。我只得到建议列表。
我已经尝试过this并直接导入轴模块:
import matplotlib.axis as axis
型
或者是
from matplotlib.axis import Axis as axis
型
智能自动完成和“收集运行时类型信息”已启用。
有没有一种方法可以像描述的那样启用自动完成功能,或者有没有其他IDE支持它?
2条答案
按热度按时间llycmphe1#
我相信你的问题在这里突出了:
https://intellij-support.jetbrains.com/hc/en-us/community/posts/205816499-Improving-collecting-run-time-type-information-for-code-insight?sort_by=votes
Tldr返回类型可以变化,因此在编译时无法确定。
最被接受的方法是使用类型提示,因为它只能在运行时确定它的类型:
字符串
你也可以使用
assert isinstance
:型
如果你在你正在寻找的方法之后执行,它将不会找到自动完成:
型
这样,你就不应该让
isinstance
来控制你的代码流,如果你试图运行一个对象上不存在的方法,它应该崩溃,但是,如果你的不同对象有一个同名的方法(!),那么您就无意中达到了这个目标,而没有注解。所以我更喜欢它,因为你希望它早点崩溃,并在正确的地方。YMMV来自doc:
Assert不应该用于测试由于错误的用户输入或操作系统/环境故障而可能发生的故障情况,例如找不到文件。相反,您应该引发一个异常,或者打印一条错误消息,或者其他适当的方法。Assert应该只用于程序的自测试的一个重要原因是Assert可以在编译时被禁用。
如果Python是用-O选项启动的,那么Assert将被剥离并且不被计算。因此,如果代码大量使用Assert,但性能关键,那么有一个系统可以在发布版本中关闭它们。(除非真的有必要,否则不要这样做。
https://wiki.python.org/moin/UsingAssertionsEffectively的
或者,如果您不想以这种方式添加代码,并且通过anoconda安装了Ipython/jupyter,则可以通过右键单击要运行的代码并选择“在控制台中执行选择”来从控制台获得代码完成
b09cbbtk2#
保罗的回答。如果你使用
fig, ax = plt.subplots()
,你可以使用figure type hint
。参见以下示例:字符串