我已尝试使用Google和stackoverflow进行搜索,但我无法找到这个简单问题的答案,这个问题可能已多次被问过
在文件f1.py中,我有
import numpy as np
在文件f2.py中,我有
import f1
class One:
mat = np.array([[1]]))
当我运行f2时,我收到错误消息“' np'未定义。我应该如何表达我的明显意图? 为了给出背景,我正在编写我的第一个不是玩具程序的python3程序。 f1代表实质代码。 f2应该是一个单元测试程序。但是,对python语法的一些基本误解阻碍了我的进步。我认为f1的导入会将np带入f2的命名空间,但它似乎并没有。
答案 0 :(得分:1)
我认为f1的导入会将np带入f2的命名空间,但似乎没有。
事实上。每个模块都有自己的命名空间,您必须明确地导入您依赖的所有模块。因此,如果f2.py
需要numpy
,则必须明确导入它:
import numpy as np
import f1
class One:
mat = np.array([[1]]))
注意:导入f1也不直接注入f1中定义的任何其他名称,因此如果f1中有一个函数“foo”,则在f2中你需要导入f1(如上例所示)和使用限定名称f1.foo()
或明确导入名称“foo”,即from f1 import foo
(但之后您只能访问foo
,而不能访问f1中定义的任何其他名称。
答案 1 :(得分:0)
mat = np.array([[1]])
在此行中,np
不在本地名称空间中,因为您尚未在本地名称空间中导入np
。
因此,如果你必须使用np,你应该使用以下行: -
mat = f1.np.array([[1]])
有关详细信息,请转到此链接import x and from x import
答案 2 :(得分:-1)
你应该像这样导入np:
from f1 import np