如何在导入的模块之间共享全局变量?
我有两个模块,一个是 a.py,另一个是 b.py。我想让 a.py 中的全局变量在 b.py 中也能用,像这样:
a.py:
#!/usr/bin/env python
var = "this is global"
import b
b.foo()
b.py:
#!/usr/bin/env python
var = "this is global"
def foo():
print var
现在,我在每个模块里都重新声明了一遍全局变量。肯定有更简单的方法。
3 个回答
2
通过让b.py依赖于a.py中的全局变量,你就创建了相互依赖的类,这样的设计是不好的。
如果你有需要共享的静态变量,可以考虑创建一个c.py,让a.py和b.py都能导入并使用它。
如果你有需要共享的动态变量,可以考虑创建一个settings类,这样可以实例化这个类并在模块之间传递。
2
在c.py文件中定义你的全局变量,然后在a.py和b.py文件中导入这些变量。
4
创建一个设置模块,如果你想要共享一些全局变量的话。这样你只需要导入和引用每个全局变量一次,而且这些变量会被隔离在设置模块的命名空间里。这样做是很好的。
#settings.py
var = 'this is global'
# a.py
import settings
import b
b.foo()
# b.py
import settings
def foo():
print settings.var