你好,下面有两个相同功能的运行。他们应该返回AB
作为答案。但只有第一个。全局变量发生了什么?
txt=''
def test():
global txt
txt+='A'
print(txt)
return 'B'
tmp=test()
print('tmp: ', tmp)
txt+=tmp
print(txt)
第二次运行
txt=''
def test():
global txt
txt+='A'
print(txt)
return 'B'
print(txt)
txt+=test()
print(txt)
修改
答案 0 :(得分:5)
在第二个例子中
txt += test()
这可以分解为
txt = txt + test()
在这种情况下,第一个txt
不会更改为A
。
因此,你实际上在做
txt = '' + 'B'
对于第一个示例,txt
变量在创建A
的过程中已更改为tmp
。
因此,对于
txt += test()
你正在做txt = 'A' + 'B'