1. 当变量a是不可变类型数据时,a += a与 a = a + a的输出一致,变量a在函数内部的变化不会影响函数外全局变量a的值。a = 10
def sum_a(a):
a += a
print(a)
sum_a(a)
print(a)
print('-'*20)
def sum_b(a):
a = a + a
print(a)
sum_b(a)
print(a)
输出:
20
10
--------------------
20
10
2. 当变量a是可变类型数据时,在函数中,a+=a不等于a=a+a!
a+=a是在全局变量a的内存地址上进行修改;而a=a+a是定义一个局部变量a,将a+a的值赋予它,全局变量a的值不变a = [11, 22]
def sum_a(a):
a += a
print(a)
sum_a(a)
print(a)
print('-'*20)
a = [11, 22]
def sum_b(a):
a = a + a
print(a)
sum_b(a)
print(a)
输出:
[11, 22, 11, 22]
[11, 22, 11, 22]
--------------------
[11, 22, 11, 22]
[11, 22]