我正在寻找跨多个文件共享全局变量的方法。我找到了这个,第二个答案把我带到了这里。现在我知道怎么做了。例如:
# config.py
THIS_IS_A_GLOBAL_VARIABLE = 1
# sub.py
import config
def print_var():
print('global variable: ', config.THIS_IS_A_GLOBAL_VARIABLE)
# main.py
import config
from sub import print_var
print_var() # global variable: 1
config.THIS_IS_A_GLOBAL_VARIABLE = 2
print_var() # global variable: 2
这正是我想要的。
问题是,我很好奇为什么它工作?这里有一个简单的解释:Because there is only one instance of each module, any changes made to the module object get reflected everywhere
。但我还是不能完全理解。有什么进一步的解释吗?
谢谢!
有效位在这里:config.THIS_IS_A_GLOBAL_VARIABLE = 2
发生的是config
是对模块config.py
的引用。然后THIS_IS_A_GLOBAL_VARIABLE
是该模块中的一个属性,上面的赋值使该属性指向不同的对象。
现在,任何其他模块有一行:import config
指的是同一个模块,当你获取任何属性时,你得到相同的引用。