我有一个模块,它包含使用从另一个模块导入的函数的函数。让我们称之为主要功能。
我想在main函数中设置一些变量作为全局变量,并在导入的子模块的函数中将它们用作全局变量(有些特殊的东西,我不能将它们用作函数的参数) 无法弄清楚如何做到这一点。我的例子:
#submodule.py
def subfunction():
print COLORS
#mainmodule.py
from submodule import subfunction
def main(colors, x, y, z):
global COLORS
COLORS=colors
subfunction()
答案 0 :(得分:1)
一种可能的方法是创建一个类Color
并使用静态变量values
。
文件Color.py:
class Colors:
values = [255, 0, 0]
档案main.py:
from Color import Colors
def main():
# Default:
print Colors.values
# New:
Colors.values = [0, 255, 0]
print Colors.values
if __name__ == "__main__":
main()
输出:
[255, 0, 0]
[0, 255, 0]
答案 1 :(得分:0)
不要这样做。有一种称为"耦合"用作编程复杂性的度量。基本上,事物越松散耦合越好,这意味着一段代码使用的值应该显式传递给该代码。因此,您应该按照这些方式编写示例:
#submodule.py
def subfunction(colors):
print colors
#mainmodule.py
from submodule import subfunction
def main(colors, x, y, z):
global COLORS
colors = COLORS
subfunction(colors)
即便如此,使用global
在mainmodule
中设置COLORS的值也有点可疑,因为它会加强耦合。据推测,它的目的是使模块中的其他功能可以使用COLORS而无需明确传递值,但这不是一个非常好的主意。