我有
# file1.py
global a, b, c, d, e, f, g
def useful1():
# a lot of things that uses a, b, c, d, e, f, g
def useful2():
useful1()
# a lot of things that uses a, b, c, d, e, f, g
def bonjour():
# a lot of things that uses a, b, c, d, e, f, g
useful2()
和
# main.py (main file)
import file1
# here I would like to set the value of a, b, c, d, e, f, g of file1 !
bonjour()
如何处理所有这些全局变量?
PS:我不想为所有功能添加a, b, c, d, e, f, g
,这将是非常多余的:
def useful1(a, b, c, d, e, f, g):
...
def useful2(a, b, c, d, e, f, g):
...
def bonjour(a, b, c, d, e, f, g):
...
答案 0 :(得分:7)
您无需传递它们。如果您已在main.py顶部完成import file1
,则可以直接引用file1.a
等。
然而,拥有这么多全局变量闻起来非常糟糕。你可能应该使用类来重构。
答案 1 :(得分:1)
在单个程序中跨模块共享信息的规范方法是创建一个特殊模块(通常称为config或cfg)。只需在应用程序的所有模块中导入配置模块;然后该模块可用作全局名称。因为每个模块只有一个实例,所以对模块对象所做的任何更改都会反映在任何地方。 例如:
<强> config.py:强>
x = 0 # Default value of the 'x' configuration setting
<强> mod.py:强>
import config
config.x = 1
<强> main.py:强>
import config
import mod
print config.x
答案 2 :(得分:0)
使用dict来包装那些全局变量,然后只使用一个函数参数