将全局变量传递给Python中的另一个文件?

时间:2013-12-06 08:59:41

标签: python global-variables

我有

# 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):
...

3 个答案:

答案 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来包装那些全局变量,然后只使用一个函数参数