我相信我对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"的全局范围内?
Python中的全局表示当前模块的全局。要在模块之间共享变量,需要导入它们。
请注意,代码中的全局关键字根本不起任何作用,因为myVar已经在模块级别定义了。如果您在该模块中的函数内修改myVar的值,则只需要使用该关键字。
全局位于模块的上下文中。在GlobalCheck.py中,如果您放置
import GlobalSet
print GlobalSet.myVar
这会奏效的。(globals()似乎无法跨模块工作。)