2010-02-04 66 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