Python 如何在导入的模块之间共享全局文件?
我有两个模块,a.py和b.py。我希望a.py中的globals在b.py中可用,如下所示: a、 py:Python 如何在导入的模块之间共享全局文件?,python,variables,global,Python,Variables,Global,我有两个模块,a.py和b.py。我希望a.py中的globals在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 目前,我在每个模块中重新声明全局变量。必须有一种更简单的方法。通过使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
目前,我在每个模块中重新声明全局变量。必须有一种更简单的方法。通过使b.py需要从a.py获得全局变量,您已经创建了相互依赖的类,这是一种糟糕的设计
如果您有需要共享的<强>静态< /强>变量,请考虑创建<强> C.Py < /强>,其中<强> A.Py < /强>和<强> B.Py < /强>可以导入和引用。
如果您有需要共享的<强>动态< /强>变量,请考虑创建可以在模块之间实例化和传递的<强>设置<强>类。< /P> < P>创建一个具有共享全局的设置模块,如果这是您想要的。这样,您只需导入和引用每个全局变量一次,并将它们隔离在设置模块的名称空间中。这是件好事
#settings.py
var = 'this is global'
# a.py
import settings
import b
b.foo()
# b.py
import settings
def foo():
print settings.var
在c.py中定义全局变量并将它们导入a.py和b.py这毫无意义。您希望
在b
上导入a
,并且它们打印a.var
@JBernardo:不,这会导致循环导入。@不,不会,因为导入b应该被删除。顺便说一句,Python毫无怨言地处理循环导入。谢谢大家。有道理。现在需要做的工作和搜索/更换我的85个模块(插件)。