2014-10-06 93 views
0

我相信我對Python全局變量及其範圍有一些基本的誤解,並且我希望有人能夠教育我。 說我有兩個Python文件。適當的Python全局變量使用

#"GlobalSet.py" 

global myVar 
myVar = True 

print "myVar" in globals() 

import GlobalCheck 

#"GlobalCheck.py" 

print "myVar" in globals() 

運行 「GlobalSet.py」 令人驚訝地導致

True 
False 

爲什麼不是 「myVar的」 在 「GlobalCheck」 內全球範圍內?

回答

2

全局是在模塊的上下文中。在GlobalCheck.py,如果你把

import GlobalSet 
print GlobalSet.myVar 

這將工作。 (globals()似乎不能跨模塊工作。)

+0

你也可以'從GlobalSet import myVar' – audiodude 2014-10-06 18:16:23

+0

re:globals()跨模塊:Python沒有一個單一的全局作用域。相反,每個模塊(包括'__main__')都有一個模塊級範圍,這就是函數中的''global''關鍵字引用的範圍。 – chepner 2014-10-06 18:48:28

2

Python中的全局意味着全局指向當前模塊。要在模塊之間共享變量,您需要導入它們。

請注意,代碼中的global關鍵字完全沒有作用,因爲myVar已經在模塊級定義。如果您在該模塊中的某個函數內修改myVar的值,則只需使用該關鍵字即可。