Python全局变量作用域

8
我正在尝试在一些函数中声明全局变量,并将带有这些函数的文件导入另一个文件。然而,我发现在第二个文件中运行该函数不会创建全局变量。我尝试使用相同名称创建另一个变量,但是当我打印变量时,它打印出第二个文件的值,而不是全局值。
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。如果在主函数中没有value = 0,程序将会出错(未定义value)。
如果我在globals.py中函数之外声明valuemain.py将获取全局value的值,而不是default()中设置的值。
在Python中,获取value成为全局变量的正确方法是什么?
1个回答

6

在 Python 中,全局变量仅对其所在的模块有效。没有任何名称可以修改为整个进程范围内的全局变量。

您可以通过以下方式实现您想要的效果:

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()

我不确定这个全局变量是否是解决你问题的最佳方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接