跨文件共享全局变量.它是如何工作的?



我正在寻找跨多个文件共享全局变量的方法。我找到了这个,第二个答案把我带到了这里。现在我知道怎么做了。例如:

# 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指的是同一个模块,当你获取任何属性时,你得到相同的引用。

最新更新