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