在一个目录中,我有两个文件:A.py和B.py。以下是它们的内容:
# A.py
import numpy
x = numpy.array([1, 2, 3])
print x
# B.py
import A
y = numpy.array([4, 5, 6])
print y在命令提示符(Windows 8)中,我运行以下命令:
python A.py它给出了输出:
[1, 2, 3]但是当我运行以下命令时:
python B.py我得到了输出:
NameError: name 'numpy' is not defined为什么会这样呢?numpy不应该通过A隐式地导入到B中吗?
发布于 2014-08-13 23:37:01
当你这样做的时候
import A这将从文件A.py中引入所有可导出的函数和变量,但名称空间前缀为A
假设您不想在B中再次导入numpy (正常选项),那么您的代码需要是
import A
y = A.numpy.array([4, 5, 6])或者:
from A import *前者通过A获取numpy,前缀为A(因为这是它第一次导入的地方),后者显式地从A导入所有内容,不带新的前缀。后者的缺点是它也可以带来厨房水槽的其余部分,所以对于复杂的模块通常不是一个好的计划。
通常情况下,如果B需要numpy,它会直接导入。如果A正在对它随后导出的模块进行一些更改,您通常会希望显式地导入和引用它,以便向以后查看代码的每个人表明,您正在处理的不是该库的常规版本。
发布于 2014-08-13 23:37:58
你为什么不把import numpy放在B.py里。
目前你的import A是多余的,因为你没有引用它。请先阅读教程。
https://stackoverflow.com/questions/25290310
复制相似问题