Python全局变量无法按预期工作
我刚开始学习Python,正在尝试不同的解决方案。我在使用全局变量时遇到了一些问题,但不知道为什么会这样。
首先,我有两个模块:test1和test2。test1的内容如下:
import test2
num = 0
def start():
global num
num = num + 5
print 'Starting:'
print num
test2.add()
print 'Step 1:'
print num
test2.add()
print 'Step 2:'
print num
而test2的内容是:
import test1
def add():
test1.num = test1.num + 20
当我运行test1.start()时,输出结果是:
开始:
5
第一步:
25
第二步:
45
为什么test2在修改test1中的变量时不需要使用global声明?在test1的第5行需要在第4行声明为global,但如果我把这两行都去掉,程序仍然能正常运行(输出0, 20, 40)。我只是想弄明白为什么它的表现和我预期的不一样。
谢谢。
2 个回答
0
从test2的角度来看,test1.num是属于test1模块的一个变量。
global
这个关键词只是说明这个变量的作用范围是在模块级别的,也就是说它不是局部变量。
4
global
声明不是用来 修改 名字的,而是用来 重新绑定 名字的。因为你是通过模块来访问这个名字,所以你实际上是在修改 模块。