Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在导入的模块之间共享全局文件?_Python_Variables_Global - Fatal编程技术网

Python 如何在导入的模块之间共享全局文件?

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获得全局变量,您已

我有两个模块,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获得全局变量,您已经创建了相互依赖的类,这是一种糟糕的设计

如果您有需要共享的<强>静态< /强>变量,请考虑创建<强> 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个模块(插件)。