Python 中的跨模块共享变量
一、采用general import的方法
这方法也是官方文件中FAQ中给出的方法。
在单个程序中跨模块共享信息的规范方法是创建一个特殊模块(通常称为config或cfg)。 只需在应用程序的所有模块中导入配置模块;
然后该模块可用作全局名称。 因为每个模块只有一个实例,所以对模块对象所做的任何更改都会反映在任何地方。 例如:
x = 0
import config
config.x = 1
import config
import mod
print config.x
这种方法应该也是被大家所使用最多的一种方法。
这里一定要注意要用潜拷贝,不能直接Import *这种,要保持同样的空间名称。
二、采用import + whole init()的方法
这种方法也是首先定义一个文件
setting.py
def init():
global x
x = 0
然后,在子文件中import globals
subfile.py
import setting
def stuff():
setting.x = 1
子文件中无需调用init(),调用是main文件的事:
main.py
import setting
import subfile
setting.init()
subfile.stuff()
print(setting.x)
这种方法,可以避免initialize全局变量多次。
三、builtins方法
Python3中事builtins,而Python2中是__builtins__
这种方法,官方也并不推荐。╮(╯▽╰)╭
如果你在builtins模块中添加了变量,那么,所有其他的模块有该方法的都会产生这个变量值,基本上所有模块都含有这个函数。
main.py:
import builtins
builtins.x = 1
import subfile
print(x)
这样也可以不用import,在所有其他的文件中就会都含有这个变量。