2010-02-04 70 views
3

我创建了一个要在几个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:全局名称'零'未定义”。

我在这里错过了什么?

+0

也许我在这里错过了一些东西,但是......为什么不把输入放在mymodule.py的顶部? – jamieb 2010-02-04 07:53:03

+0

你的错误不能来自你的代码:任何地方都没有全局的“零”。虽然有一个全球性的“arange”,所以这应该是错误:-) – 2010-02-04 08:05:26

+0

我也试过...相同的错误:/我试图插入“导入numpy作为np”在模块的顶部(外部函数),并在本地函数内。 – user265978 2010-02-04 08:05:59

回答

3

mymodule.py不看:

import numpy as np 

声明(S)。 Python中的“import”语句不像C++中的#include那样工作,它只是创建包含在导入模块中的新对象字典。如果您想在该字典中使用'np'标识符,则必须在该字典中明确地导入它。

关于

if __name__ == "__main__": 
    import numpy as np 

- 这当您执行mymodule.py作为独立的脚本,它可能不是在这个问题上的情况下才会被调用。

编辑:

OP改变示例代码,加入import numpy as np他的功能里面,我的回答是原来的问题。

+0

我试过这个,但仍然是一样的错误。 – user265978 2010-02-04 08:04:36

+0

mymodule.py作为一个独立的脚本完美工作,但是当我从主.py文件中调用它时,出现“全局名称未定义”错误。 – user265978 2010-02-04 09:06:55

+0

我也试过了,它适用于我! – EOL 2010-02-04 09:20:32