Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyCharm-matplotlib(和其他导入模块)的自动完成_Python_Python 2.7_Matplotlib_Pycharm - Fatal编程技术网

Python PyCharm-matplotlib(和其他导入模块)的自动完成

Python PyCharm-matplotlib(和其他导入模块)的自动完成,python,python-2.7,matplotlib,pycharm,Python,Python 2.7,Matplotlib,Pycharm,我在Windows 10上使用PyCharm 2016.1和Python 2.7,并导入了matplotlib模块 由于matplotlib模块非常广泛,而且我对Python比较陌生,因此我希望PyCharm中的自动完成函数可以帮助我了解对象的现有属性/函数。如果每次都翻阅api文档,而不知道在哪里可以找到它,那么会更方便 例如: from matplotlib import pyplot as plt fig, ax = plt.subplots() 当我键入ax时。轴的属性、功能等没有自动

我在Windows 10上使用PyCharm 2016.1和Python 2.7,并导入了matplotlib模块

由于matplotlib模块非常广泛,而且我对Python比较陌生,因此我希望PyCharm中的自动完成函数可以帮助我了解对象的现有属性/函数。如果每次都翻阅api文档,而不知道在哪里可以找到它,那么会更方便

例如:

from matplotlib import pyplot as plt
fig, ax = plt.subplots()
当我键入ax时。轴的属性、功能等没有自动完成,我只得到建议列表

我已经尝试并直接导入axis模块:

import matplotlib.axis as axis

已启用智能自动完成和“收集运行时类型信息”


是否有一种方法可以像前面所描述的那样启用自动完成,或者是否有另一个IDE支持这种方法

我相信您的问题在这里得到了强调:

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
如果您在寻找的方法之后执行自动完成,则不会找到自动完成:

ax1.set_xlabel('Test')
assert isinstance(ax1, axes.Axes)
这样,您就不应该让
isinstance
命令代码的控制流,如果您试图运行一个对象上不存在的方法,它应该会崩溃,但是,如果您的不同对象有一个同名(!)的方法,那么您在没有注释的情况下无意中达到了这个目标。所以我更喜欢它,因为你希望它在正确的地方早点崩溃。YMMV

从文档:

断言不应用于测试可能导致 由于错误的用户输入或操作系统/环境而发生 失败,例如找不到文件。相反,你应该提出一个建议 异常,或打印错误消息,或任何适当的。一个 断言只应用于测试的自测试的重要原因 该程序的目的是在编译时禁用断言

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


或者,如果您不想以这种方式添加到代码中,并且通过anoconda安装了Ipython/jupyter,您可以通过右键单击要运行的代码并选择“在控制台中执行选择”(execute selection in console)以及Paul的答案,从控制台完成代码。如果您使用的是
fig,ax=plt.subplot()
,您可以使用
图形类型提示
。请参见以下示例:

从matplotlib导入pyplot作为plt
导入matplotlib.axes.\u轴作为轴
将matplotlib.figure导入为figure
fig,ax=plt.subplot()#类型:figure.figure,axes.axes
斧头。

您的问题现在解决了吗?对于我来说,在Python 2.7中有mpl的自动完成功能,但在Python 3.6中没有。请查看是否没有
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)