为啥+=会这么厉害,求解释


当a是一个列表,b是一个元组,a和b是不能相加的

a = [1,2]
b = (3,4)
c = a + b
print(c)

img

 但是,当使用+=时,又可以了 ,而且把元组中的元素复制到了列表中

a = [1,2]
b = (3,4)
a+=b
print(a)

img

 为什么嘞?

类型不同不能相加,就比如你拿个字符串跟数字相加一样会报错,而a+=b相当于a = a+b的第一个值,然后再a=a+b的第二个值,所以不会报错。
这个概念叫做追加,AppendRange

Python的 += 实际上是调用对象的 __iadd__方法,如果该方法不存在(比如字符串或整数等不可变类型),就会调用__add__方法,返回一个新的对象。因为列表是可变对象,所以 += 相当于追加,会改变列表自身。而不可变对象,如字符串或整数使用 += 的时候实际分成两步,第一步调用__add__,第二步重新赋值。

感谢解答~~~///(^v^)\~~~