首先,+=可以理解成先+再=
1. +调用的是__add__魔术方法,+=调用的是__iadd__魔术方法,__iadd__方法只有可变类型有,不可变类型是没有的。
参考下例:
>>> t1 = (1, 2, [3, 4])
>>> t1[2] += [5, 6]
Traceback (most recent call last):
File "", line 1, in
TypeError: 'tuple' object does not support item assignment
>>> t1
(1, 2, [3, 4, 5, 6])
>>>
my_tuple是不可变类型,所以当对其中的某个元素进行+=操作时,试图调用__iadd__失败,因此报错,但实际上my_tuple[2]对应的元素是list类型,因此虽然报错了,但实际却发生了变化。如果进行my_tuple.extend([5,6])拼接操作,则可以避免此错误,并实现相同的效果。
2. 对于三种可迭代类型,
3. 如何理解这个符号:左边是变量,右边是变量值。
对于简单的a = 1; a += 3,可以看成a = a + 3,从右向左看,右边的a可以看成是a的值,即1,1 + 3得到4后赋值给左边的a,此时左边的a就只是一个变量名。