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

问题描述

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

为什么这两个有区别?

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...