为什么我不能在将numpy的别名设置为np之后从np导入数组,尽管使用from关键字和numpy有效?

Pol*_*000 1 python importerror python-3.x

为了更清楚:

import numpy as np
from numpy import array
Run Code Online (Sandbox Code Playgroud)

这按预期工作.但是这个怎么样:

from np import array
Run Code Online (Sandbox Code Playgroud)

输出是:

Traceback (most recent call last)
  <ipython-input-21-d5c81fa93e5f> in <module>()
    ----> 1 from np import array
ModuleNotFoundError: No module named 'np'
Run Code Online (Sandbox Code Playgroud)

一旦我将导入的模块的别名设置为numpy np,我是否应该只能使用np导入其他内容?

此外,id()这两个是一样的-既numpynp指同样的事情.

pok*_*oke 6

numpy即使将模块导入为模块名称,模块名称仍然是np.

什么import … as …语法基本上做到这一点是:

np = internal_import_module('numpy')
Run Code Online (Sandbox Code Playgroud)

所以这np只是用于引用numpy模块的本地名称.如果查看模块名称np,您可以看到它仍然是'numpy':

>>> import numpy as np
>>> np.__name__
'numpy'
Run Code Online (Sandbox Code Playgroud)

现在,在评估另一个import语句时,根本没有使用模块的本地名称.所以你from numpy import array的基本就是这样:

array = internal_import_module('numpy').array
Run Code Online (Sandbox Code Playgroud)

这里array只是模块array内部成员的本地名称numpy.然而,它不是np模块内部的成员,因为根本没有具有该名称的模块.