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

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

考虑以下代码:

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

为什么这两个有区别?

(是的,我试着寻找这个)。


动漫人物
浏览 771回答 2
2回答

30秒到达战场

__iadd__改变列表,然后__add__返回一个新列表,如图所示。一个表达式x += y首先尝试调用,__iadd__并且在调用失败后,调用__add__遵循一个赋值(请参阅Sven的注释以进行小修正)。既然list有__iadd__那么它Ø突变魔术这一点”。

侃侃无极

第一个改变列表,第二个重新命名。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python