为什么这两个场景不会返回相同的输出?

时间:2018-05-05 13:42:46

标签: python

你好,下面有两个相同功能的运行。他们应该返回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)

修改

proof

1 个答案:

答案 0 :(得分:5)

在第二个例子中

txt += test()

这可以分解为

txt = txt + test()

在这种情况下,第一个txt不会更改为A

因此,你实际上在做

txt = '' + 'B'

对于第一个示例,txt变量在创建A的过程中已更改为tmp

因此,对于

txt += test()

你正在做txt = 'A' + 'B'