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()
如果我在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()
不过,我不太确定像这样的全局变量是否是解决你问题的最佳方法。