2016-04-29 68 views
3

我在Windows 10上使用PyCharm 2016.1和Python 2.7并导入了matplotlib模块。PyCharm - 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?

回答

1

我相信你的问题是在这里强调:

https://intellij-support.jetbrains.com/hc/en-us/community/posts/205816499-Improving-collecting-run-time-type-information-for-code-insight?sort_by=votes

Tldr返回类型可能不同,因此它不能在编译的时候想通了。

最接受的方法是使用一种暗示,因为它只能找出键入它,运行时间:

import matplotlib.axes._axes as axes 

fig = plt.figure(figsize=(5,10)) 
ax1 = fig.add_subplot(3,1,1) # type:axes.Axes 
ax1.set_xlabel('Test') <- now autocompletes 

您也可以尝试assert isinstance

import matplotlib.axes._axes as axes 

fig = plt.figure(figsize=(5,10)) 
ax1 = fig.add_subplot(3,1,1) 
assert isinstance(ax1, axes.Axes) 
ax1.set_xlabel('Test') 

它不会找到自动完成,如果你在你正在寻找的方法后:

ax1.set_xlabel('Test') 
assert isinstance(ax1, axes.Axes) 

有了这个,你不应该让isinstance指定你的代码的控制流,如果你试图运行一个不存在于对象上的方法,它应该会崩溃,但是,如果你的不同对象有一个同名的方法(!),那么你有无意中达到了目标,没有注释。所以我更喜欢它,因为你希望它在早期和正确的位置崩溃。 YMMV

从DOC:

断言应该被用来测试对可 因为不良的用户输入或操作系统/环境 故障,如不是一个文件的发生故障的情况下找到。相反,您应该引发一个异常,或者打印一条错误消息或其他适当的东西。一个 为什么断言只能用于 的自检的一个重要原因是该程序可以在编译时禁用断言。

如果Python是使用-O选项启动的,则断言将被剥离并且不被评估。因此,如果代码严重使用断言, 但对性能至关重要,那么有一个系统可以在发布版本中将它们关闭 。 (但不这样做,除非真的有必要 。

https://wiki.python.org/moin/UsingAssertionsEffectively

或者,如果你不想添加到您的代码以这种方式,并有IPython中/ jupyter通过anoconda安装,你可以右键单击要运行的代码并选择“在控制台中执行选择”,从控制台获取代码完成代码