2014-10-06 64 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的值,则只需使用该关键字即可。