Python全局变量的作用域

23 浏览
0 Comments

Python全局变量的作用域

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

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.py中的函数外部声明valuemain.py将采用全局value的值,而不是在default()中设置的值。

在Python中如何正确地将value作为全局变量?

0
0 Comments

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

然而,我不确定这样的全局变量是否是解决问题的最佳方法。

0