补充:+= 对于列表的特殊性

+= 在通常情况下,代表先相加再赋值,例如 a += 10,等同于:a = a + 10,先a+10,再赋值给变量a

在函数中,不可变的元素使用+=,就相当于赋值(相加后赋值),也就是说在函数内部定义了局部变量,例如:

def test(num):
    num += num
    print(num)

num = 10

test(num)

print(num)

输出:
20
10

函数中的num为局部变量,相当于num = num +num

但是对于列表,list += list与list = list+list完全是两回事,前者的+=对于列表,执行的是extend追加操作,后者则是重新赋值,例如:

def test(num):
    num += num
    print(num)

num = [10]

test(num)

print(num)

输出:
[10,10]
[10,10]

使用+=,函数中的num是全局变量,num += num,相当于将num追加到num
但是,如果num += num,修改成:num = num + num,则是在函数中定义了一个与全局num同名的局部变量num
输出:
[10,10]
[10]

 

posted @ 2018-12-06 15:07  greenfan  阅读(111)  评论(0)    收藏  举报