使用包的别名时,为什么从包导入无效?

时间:2018-08-05 17:20:19

标签: python python-3.x importerror

为了更加清楚,请考虑一个小例子:

httpServletRequest.getCookies()

这按预期工作。但是呢:

response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");

输出为:

import numpy as np
from numpy import array

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

此外,两者的Traceback (most recent call last) <ipython-input-21-d5c81fa93e5f> in <module>() ----> 1 from np import array ModuleNotFoundError: No module named 'np' 是相同的– npid()指的是同一件事。

1 个答案:

答案 0 :(得分:6)

即使将模块导入为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只是array模块内部numpy成员的本地名称。但是,它不是np模块内部的成员,因为根本就没有该名称的模块。