在目录中,我有两个文件: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
这是为什么?难道不能通过A?
隐式导入B中答案 0 :(得分:3)
当你这样做时
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对其随后导出的模块进行了一些更改,您通常会希望明确导入并引用它,以便在以后查看代码的每个人都标记您未处理该库的常规版本
答案 1 :(得分:1)
为什么不把import numpy
放在B.py.
目前您的import A
是多余的,因为您没有引用它。请先阅读教程。