python导入只能以一种格式工作

python导入只能以一种格式工作,python,python-import,Python,Python Import,当我构建时: import matplotlib pyplot.plot([1,2,3,4]) pyplot.ylabel('some numbers') pyplot.show() 我得到: Traceback (most recent call last): File "/Users/Paulair/Desktop/mathGraphing.py", line 2, in <module> pyplot.plot([1,2,3,4]) NameError: name

当我构建时:

import matplotlib
pyplot.plot([1,2,3,4])
pyplot.ylabel('some numbers')
pyplot.show()
我得到:

Traceback (most recent call last):
  File "/Users/Paulair/Desktop/mathGraphing.py", line 2, in <module>
    pyplot.plot([1,2,3,4])
NameError: name 'pyplot' is not defined
[Finished in 0.2s with exit code 1]

它起作用了

在第一种情况下,需要从matplotlib导入pyplot

如果只导入matplotlib,则必须使用
matplotlib.pyplot.plot(…

很抱歉回答错误,pyplot是matplotlib的子模块,它故意不使用简单的
import matplotlib
从matplotlib import*
导入。请参阅。 您必须显式地导入它

对于@Joe Kington的解释,分离的原因是:

  • 允许在导入pyplot之前调用某些设置命令(例如matplotlib.use)和
  • 允许使用matplotlib的其他部分,而无需“繁重”导入完整的绘图功能(但大部分为#1)

  • 在第一种情况下,需要从matplotlib导入pyplot

    如果只导入matplotlib,则必须使用
    matplotlib.pyplot.plot(…

    很抱歉回答错误,pyplot是matplotlib的子模块,它故意不使用简单的
    import matplotlib
    从matplotlib import*
    导入。请参阅。 您必须显式地导入它

    对于@Joe Kington的解释,分离的原因是:

  • 允许在导入pyplot之前调用某些设置命令(例如matplotlib.use)和
  • 允许使用matplotlib的其他部分,而无需“繁重”导入完整的绘图功能(但大部分为#1)

  • 这就是导入的工作方式。当您导入模块时,您只导入名称
    模块
    。如果要在该模块中使用项或子模块,您需要:

  • 通过限定名称:
    module.submodule.function(…)
  • 或者导入所需子模块的名称,如果愿意,请为其提供别名:
    import module.submodule
    import module.submodule as submodule
  • 或者导入您希望首先使用的模块/函数/类名:
    来自模块导入子模块
    来自模块。子模块导入函数
  • 否则,Python无法知道某个未定义的名称实际存在的位置,因此它会引发
    namererror



    在特定情况下,必须显式导入
    pyplot
    ,因为
    matplotlib
    特定子模块本身(除此之外,您可能会注意到,
    import matplotlib.pyplot as plt
    需要一段时间才能执行:这是一个昂贵的导入,而
    matplotlib
    选择默认情况下避免执行,因为核心功能不需要
    pyplot
    )。因此,您需要使用上面方法
    2
    3
    的一些变体显式导入它。

    这就是导入的工作方式。当您
    导入模块时,您只导入名称
    模块
    。如果要在该模块中使用项或子模块,您需要:

  • 通过限定名称:
    module.submodule.function(…)
  • 或者导入所需子模块的名称,如果愿意,请为其提供别名:
    import module.submodule
    import module.submodule as submodule
  • 或者导入您希望首先使用的模块/函数/类名:
    来自模块导入子模块
    来自模块。子模块导入函数
  • 否则,Python无法知道某个未定义的名称实际存在的位置,因此它会引发
    namererror



    在特定情况下,必须显式导入
    pyplot
    ,因为
    matplotlib
    特定子模块本身(除此之外,您可能会注意到,
    import matplotlib.pyplot as plt
    需要一段时间才能执行:这是一个昂贵的导入,而
    matplotlib
    选择默认情况下避免执行,因为核心功能不需要
    pyplot
    )。因此,您需要使用上面方法
    2
    3
    的一些变体来显式导入它。

    但是,您是否可以只通过说:import matplotlib?或者您总是必须放置(from)和(import)来导入整个库无处不在?要从matplotlib import*
    导入所有您可以使用的
    。这将从
    matplotlib
    中提取所有名称。您必须看看这是否是一个好主意。我刚刚尝试过,但由于各种原因,在使用matplotlib.pyplot.plot等时不起作用,从matplotli执行
    导入matplotlib
    b import*
    故意不导入
    matplotlib.pyplot
    。因此,您需要以某种方式显式导入
    matplotlib.pyplot
    (例如
    将matplotlib.pyplot导入为plt
    从matplotlib导入pyplot
    等)。分隔的原因是1)允许在导入
    pyplot
    之前调用某些设置命令(例如
    matplotlib.use
    )和2)允许使用matplotlib的其他部分,而无需“大量”导入完整的打印功能。(不过,大部分为#1)但是,是否可以只通过说:import matplotlib导入整个库?或者您总是必须输入(from)和(import)无处不在?要从matplotlib import*
    导入所有您可以使用的
    。这将从
    matplotlib
    中提取所有名称。您必须看看这是否是一个好主意。我刚刚尝试过,但由于各种原因,在使用matplotlib.pyplot.plot等时不起作用,从matplotli执行
    导入matplotlib
    b导入*
    故意不执行
    import matplotlib.pyplot as plt
    plt.plot([1,2,3,4])
    plt.ylabel('some numbers')
    plt.show()