考虑以下代码:
>>> x = y = [1, 2, 3, 4] >>> x += [4] >>> x [1, 2, 3, 4, 4] >>> y [1, 2, 3, 4, 4]
然后考虑一下:
>>> x = y = [1, 2, 3, 4] >>> x = x + [4] >>> x [1, 2, 3, 4, 4] >>> y [1, 2, 3, 4]
为什么这两个有区别?
(是的,我尝试搜索此内容)。
__iadd__更改列表,然后__add__返回一个 新 列表,如所示。
__iadd__
__add__
x += y第一次尝试调用的表达式__iadd__,如果失败,将__add__在赋值之后调用(请参见Sven的评论进行较小的更正)。从那时list起,__iadd__它就完成了这一点’o突变魔术。
x += y
list