我刚开始使用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
第1步:
25个
第2步:
45
为什么test2不需要全局声明来修改test1中的变量? test1中的第5行需要它在第4行,但如果我删除它们仍然有效(0,20,40)。我只是想弄清楚为什么它不像我预期的那样工作。
感谢。
答案 0 :(得分:4)
global
声明不是修改名称,而是重新绑定。由于您通过其模块访问该名称,因此您正在修改模块。
答案 1 :(得分:0)
从test2的角度来看,test1.num是属于模块test1的变量。
global
关键字仅指明该变量的范围是模块级别(即非本地)。