考虑以下代码:
>>> x = y = [1, 2, 3, 4]
>>> x += [4]
>>> x
[1, 2, 3, 4, 4]
>>> y
[1, 2, 3, 4, 4]
Run Code Online (Sandbox Code Playgroud)
然后考虑这个:
>>> x = y = [1, 2, 3, 4]
>>> x = x + [4]
>>> x
[1, 2, 3, 4, 4]
>>> y
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
为什么这两个有区别?
(是的,我试着寻找这个).
小智 28
__iadd__改变列表,然后__add__返回一个新列表,如图所示.
一个表达式x += y首先尝试调用,__iadd__并且在调用失败后,调用__add__遵循一个赋值(请参阅Sven的注释以进行小修正).既然list有__iadd__那么它Ø突变魔术这一点".
| 归档时间: |
|
| 查看次数: |
4936 次 |
| 最近记录: |