我理解这两个语句在语法上是相同的,但它们的实现是不同的:
>>> s = [1,2,3]
>>> t = [4,5,6]
>>> s += t
>>> s = s + t
在第一种情况下,左侧仅评估一次。
但是如何实施?
仅评估一次是什么意思?
答案 0 :(得分:1)
如果是列表,+=
就位,这意味着它不会创建新列表,它会更改左侧的列表。它在内部调用__iadd__()
方法列表(i
代表的位置)。
其中,连接运算符+
实际上创建了一个新列表。 (它在内部调用__add__()
方法)
显示这种差异的简单示例 -
+=
-
>>> s = [1,2,3]
>>> t = [4,5,6]
>>> z = s
>>> s+=t
>>> s
[1, 2, 3, 4, 5, 6]
>>> z
[1, 2, 3, 4, 5, 6]
用于连接 -
>>> s = [1,2,3]
>>> t = [4,5,6]
>>> z = s
>>> s = s + t
>>> z
[1, 2, 3]
>>> s
[1, 2, 3, 4, 5, 6]