Python全局变量作用域

8 投票
1 回答
1471 浏览
提问于 2025-04-17 20:07

我在一些函数里想声明一些全局变量,然后把这些函数的文件导入到另一个文件里。但是我发现,在第二个文件里运行这个函数并不会创建全局变量。我试着用同样的名字创建了另一个变量,但当我打印这个变量时,它显示的是第二个文件里的值,而不是全局的值。

globals.py

def default():
    global value
    value = 1

main.py

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

if __name__=='__main__':
    main()

如果我在main里没有写value = 0,那么程序会报错(value未定义),这时会打印出0。

如果我在globals.py里在函数外声明了value,那么main.py会使用全局的value,而不是在default()里设置的值。

那么,怎样才能让value在python中成为一个全局变量呢?

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

不过,我不太确定像这样的全局变量是否是解决你问题的最佳方法。

撰写回答