我正在处理Django项目,但这个问题也可能是Python通用的。使用特定Django特性的答案也可以接受。
我试图将全局变量定义为模块中的dict。我要求这个变量可以被其他模块访问。困难的部分是,这个全局变量可以在构建时被无限多的其他模块多次设置/更新。在所有的设置/更新之后,可以读取变量以在固定数量的模块中设置一些其他全局变量。我应该如何确保所有读取都发生在设置/更新之后?
演示代码:
- 我想在模块
m
的setting.py
上有一个GLOB
:
在m/setting.py:
GLOB=dict()
- 其他一些模块(无限多,假设它们是
p
、q
和r
)将需要更新此变量:
在p/config.py:
从m.setting导入GLOB
GLOB['p']=1
在q/config.py:
从m.setting导入GLOB
GLOB['q']=2
在r/config.py:
从m.setting导入GLOB
GLOB['r']=3
- 两个模块(固定多个,假设它们是
a
和z
)将需要从该变量中读取并执行其他操作:
在/config.py:
从m.setting导入GLOB
A_GLOB=[k表示GLOB中的k,如果GLOB[k]%2]
在z/config.py:
从m.setting导入GLOB
Z_GLOB=[k表示GLOB中的k,如果不是GLOB[k]%2]
对于上面的示例,我如何确保A_GLOG
是['p', 'r']
,Z_GLOB
是['q']
?
谢谢你的帮助!
所有允许与模数%
有关的整数。模的结果不是布尔值,而是一个整数。所以你需要更具体一些。
A_GLOB = [k for k in GLOB if GLOB[k]%2 != 0] # 1%2 and 3%2 == 1
Z_GLOB = [k for k in GLOB if not GLOB[k]%2 == 0] # 2%2 == 0