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

时间:2011-10-12 17:15:16

标签: python variables global

我有两个模块,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 个答案:

答案 0 :(得分:2)

通过使b.py需要来自a.py的全局变量,你创建了相互依赖的类,这是糟糕的设计。

如果您有需要共享的静态变量,请考虑创建 a.py b c.py .py 可以导入和引用。

如果您有需要共享的动态变量,请考虑创建一个设置类,该类可以在模块之间实例化并传递。

答案 1 :(得分:2)

创建一个具有共享全局变量的设置模块,如果这是您想要的。这样,您只需导入和引用每个全局一次,并且您将它们隔离在设置模块的命名空间内。这是件好事。

#settings.py
var = 'this is global'

# a.py
import settings
import b
b.foo()

# b.py
import settings
def foo():
    print settings.var

答案 2 :(得分:2)

在c.py中定义全局变量并将它们导入a.py和b.py