我有一個函數,我從模塊調用。在函數中,我試圖訪問的兩個變量是全局的。當我單獨運行IDLE模塊時,我仍然可以在函數結束後訪問變量,如預期的那樣。當我將模塊導入到代碼中的函數中時,我無法訪問這些變量。訪問導入模塊中函數的全局變量
#module to be imported
def globaltest():
global name
global age
name = str(raw_input("What is your name? "))
age = int(raw_input("What is your age? "))
當我自己運行它時的輸出。
>>> globaltest()
What is your name? tom
What is your age? 16
>>> name
'tom'
>>> age
16
並在其中導入它的代碼。
import name_age
name_age.globaltest()
但是當我運行試圖訪問我導入它的代碼中的變量。
What is your name? tom
What is your age? 16
>>> name
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
name
NameError: name 'name' is not defined
>>>
我怎樣才能讓在我已導入模塊或訪問「名稱」,或在功能「年齡」變量代碼變量全球。
星級進口大約爲邪惡的全局。 @badathings:_dont_這樣做。 – 2013-04-10 11:45:43
@bruno desthuilliers:好的,謝謝。 – 2013-04-10 11:46:46
從[PEP8](http://legacy.python.org/dev/peps/pep-0008/#imports)*「應避免使用通配符導入(從導入*),因爲它們不清楚哪些名稱存在在命名空間中,混淆了讀者和許多自動化工具......「* –
SiHa
2014-06-20 07:14:29