为什么在使用包的别名时从包中导入无效?
Why is importing from a package invalid when the aliased name of package is used?
为了更清楚,考虑一个 numpy 示例:
import numpy as np
from numpy import array
这按预期工作。但是这个呢:
from np import array
输出为:
Traceback (most recent call last)
<ipython-input-21-d5c81fa93e5f> in <module>()
----> 1 from np import array
ModuleNotFoundError: No module named 'np'
一旦我将导入模块 numpy 的别名设置为 np
,难道我不能只使用 np 导入其他东西吗?
此外,两者的 id()
是相同的 -- numpy
和 np
指的是同一事物。
模块名称仍然是 numpy
,即使您将模块导入为 np
。
import … as …
语法基本上是这样的:
np = internal_import_module('numpy')
所以 np
只是用来引用 numpy
模块的本地名称。如果你看np
的模块名,你会发现它仍然是'numpy'
:
>>> import numpy as np
>>> np.__name__
'numpy'
现在,在评估另一个导入语句时,根本不会使用模块的本地名称。所以你的 from numpy import array
基本上就是这样:
array = internal_import_module('numpy').array
此处 array
再次只是 numpy
模块内 array
成员的本地名称。然而,它不是 np
模块中的成员,因为根本不存在具有该名称的模块。
为了更清楚,考虑一个 numpy 示例:
import numpy as np
from numpy import array
这按预期工作。但是这个呢:
from np import array
输出为:
Traceback (most recent call last)
<ipython-input-21-d5c81fa93e5f> in <module>()
----> 1 from np import array
ModuleNotFoundError: No module named 'np'
一旦我将导入模块 numpy 的别名设置为 np
,难道我不能只使用 np 导入其他东西吗?
此外,两者的 id()
是相同的 -- numpy
和 np
指的是同一事物。
模块名称仍然是 numpy
,即使您将模块导入为 np
。
import … as …
语法基本上是这样的:
np = internal_import_module('numpy')
所以 np
只是用来引用 numpy
模块的本地名称。如果你看np
的模块名,你会发现它仍然是'numpy'
:
>>> import numpy as np
>>> np.__name__
'numpy'
现在,在评估另一个导入语句时,根本不会使用模块的本地名称。所以你的 from numpy import array
基本上就是这样:
array = internal_import_module('numpy').array
此处 array
再次只是 numpy
模块内 array
成员的本地名称。然而,它不是 np
模块中的成员,因为根本不存在具有该名称的模块。