Python全局变量范围

时间:2013-03-24 05:04:46

标签: python global-variables scope

我试图在某些函数中声明一些全局变量,并将带有这些函数的文件导入另一个函数。但是,我发现在第二个文件中运行该函数不会创建全局变量。我尝试使用相同的名称创建另一个变量,但是当我打印出变量时,它会打印出第二个文件的值,而不是全局值

globals.py

def default():
    global value
    value = 1

main.py

from globals import *
value = 0
def main():
    default()
    print value

if __name__=='__main__':
    main()

这将打印0.如果我在main中没有value = 0,则程序将出错(值未定义)。

如果我在函数之外的value中声明globals.pymain.py将采用全局value的值,而不是{{1}中设置的值}}

在python中使default()成为全局变量的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

Python中的Globals只是他们模块的全局。没有可以修改的名称对整个过程是全局的。

你可以用这个完成你想要的东西:

globals.py:

value = 0
def default():
    global value
    value = 1

main.py:

import globals
def main():
    globals.default()
    print globals.value

if __name__ == "__main__":
    main()

我不知道这样的全球化是否是解决问题的最佳方式。