如何在导入的模块之间共享全局变量?

3 投票
3 回答
736 浏览
提问于 2025-04-17 04:10

我有两个模块,一个是 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.pyb.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

撰写回答