当前位置: 首页 > 知识库问答 >
问题:

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

南宫才英
2023-03-14

我在Windows 10上用的是PyCharm 2016.1和Python 2.7,导入了matplotlib模块。

由于matplotlib模块非常广泛,而且我对Python相对陌生,我希望PyCharm中的自动完成功能可以帮助我了解对象的现有属性/功能。这将更方便,因为每次都要查阅api文档,而不知道要查找什么以及在哪里可以找到它。

例如:

from matplotlib import pyplot as plt
fig, ax = plt.subplots()

当我输入< code>ax时。属性、功能等没有自动完成功能。我只得到建议列表。

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

import matplotlib.axis as axis

from matplotlib.axis import Axis as axis

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

有没有办法启用如上所述的自动完成,或者是否有另一个 IDE 支持它?

共有2个答案

安聪
2023-03-14

除了保罗的回答。如果使用fig,ax=plt。subplots(),您可以使用图形类型提示。参见以下示例:

js lang-js prettyprint-override">from matplotlib import pyplot as plt
import matplotlib.axes._axes as axes
import matplotlib.figure as figure

fig, ax = plt.subplots()  # type:figure.Figure, axes.Axes
ax.
fig.
乐正玺
2023-03-14

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

https://intellij-support . jetbrains . com/HC/en-us/community/posts/205816499-Improving-collecting-run-time-type-information-for-code-insight?排序方式=投票

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

您也可以尝试断言是实例

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决定代码的控制流,如果你试图运行一个对象上不存在的方法,它应该崩溃,但是,如果你的不同对象有一个同名的方法(!),那么你无意中达到了那个目标,没有注释在那里。所以我更喜欢它,因为您希望它尽早崩溃并在正确的位置。扬子晚报

来自文档:

断言不应用于测试由于错误的用户输入或操作系统/环境故障(如找不到文件)而可能发生的故障情况。相反,您应该引发异常,或打印错误消息,或任何适当的方法。断言应该只用于程序的自测试的一个重要原因是断言可以在编译时被禁用。

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

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

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

 类似资料:
  • 问题内容: MyPython IDE(pycharm)已停止自动完成My模块(建议)。我尝试导入的每个django模块之后都会得到未解析的引用,因此: -可以,但是一旦我添加一个“点”,它就会失败,因此给了我未解决的错误… 笨拙的事情是在编译引用后才起作用。 我发现My所有文件(所有地方)不再标记有python图标,现在是记事本图标。同样在My解释器中打开init文件会给出非彩色的标记文本(不突出

  • 我是PyCharm的新手,很难将我编写的模块导入Python控制台。如果我尝试导入Python自带的模块,我可以毫无困难地导入该模块,但是如果我尝试导入我编写的模块,我会得到一个导入错误:没有名为“ModuleITriedToImportName”的模块。例如,这里有一个简单的自我编写的模块pickle文件称为“文件pickle”: 如果我尝试在PyCharm Python控制台上“导入pickl

  • 我在Pycharm中有一个python项目,其中有一个嵌套的Git子模块。以下是文件夹结构: 中的导入结构如下: 但是,Pycharm没有意识到这一点,而是希望我拥有以下内容: 这是有问题的,因为我不想更改中的所有导入(这似乎不是一个好的实践,也不可扩展),而且中有破折号,这对于导入来说不是有效的Python语法(我无法重命名repo)。 我还需要一种从我的代码中导入的方法。像这样的东西: 但当然

  • 本文向大家介绍Pycharm编辑器技巧之自动导入模块详解,包括了Pycharm编辑器技巧之自动导入模块详解的使用技巧和注意事项,需要的朋友参考一下 前言 pycharm可以很方便的管理Python的解释器(如果安装了多个的话),以及第三方模块,包。Pycharm是很多Python开发者的首选IDE,如果能把一个工具熟练运用,往往有事半功倍的效果,各种快捷键、重构功能、调试技巧。由于Python是一

  • 每当我创建一个函数,使其成为视图并将模板映射到它上面时,PyCharm 中的自动完成功能都可以工作。如果您输入类似 { 的内容,其中 是一个模型,并且是您的上下文对象之一,那么它将为您提供一个下拉菜单,其中包含可能的完成。 然而,如果你创建了一个基于类的视图,那么这是行不通的。我能解决这个问题吗?