全局和局部导入
我创建了一个模块,这个模块会在多个Python脚本中使用。它的结构如下:
主文件:
import numpy as np
from mymodule import newfunction
f = np.arange(100,200,1)
a = np.zeros(np.shape(f))
c = newfunction(f)
mymodule.py:
def newfunction(f):
import numpy as np
b = np.zeros(np.shape(f))
return b
if __name__ == "__main__":
import numpy as np
这个程序的功能你先不用在意,但我遇到的问题是,当我运行它的时候,出现了“NameError: global name 'zeros' is not defined”的错误。
我这里漏掉了什么呢?
1 个回答
3
mymodule.py 看不到:
import numpy as np
语句。“import”语句在Python中和C++的#include不一样,它只是创建了一个包含被导入模块中对象的新字典。如果你想在这个字典里使用‘np’这个标识符,你需要明确地在里面导入它。
关于
if __name__ == "__main__":
import numpy as np
-- 只有在你把 mymodule.py 当作独立脚本执行时,这个才会被调用,而在这个问题中可能并不是这种情况。
编辑:
提问者修改了示例代码,在他的函数里添加了 import numpy as np
,而我的回答是针对最初的问题。