小编典典

list .__ iadd__和list .__ add__的不同行为

python

考虑以下代码:

>>> 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]

为什么这两个有区别?

(是的,我尝试搜索此内容)。


阅读 286

收藏
2020-12-20

共1个答案

小编典典

__iadd__更改列表,然后__add__返回一个 列表,如所示。

x += y第一次尝试调用的表达式__iadd__,如果失败,将__add__在赋值之后调用(请参见Sven的评论进行较小的更正)。从那时list起,__iadd__它就完成了这一点’o突变魔术。

2020-12-20