我观察到在列表中使用
+=
和 +
运算符时 Python 的行为存在差异。考虑以下代码片段:
x = [1, 2]
y = x
x += [3]
y += [4]
print(x is y) # Output is True
在本例中,输出为
True
,表示 x
和 y
引用了内存中的同一个对象。然而,当我稍微修改代码时:
x = [1, 2]
y = x
x += [3]
y = y + [4]
print(x is y) # Output is False
输出为
False
,表明 x
和 y
现在引用不同的对象。虽然 +=
通常被认为是列表连接的语法糖,但这种行为与这种理解相矛盾。
有人可以澄清
+=
和 +
在与列表一起使用时的行为差异吗?我有兴趣了解底层机制。
根据我的理解,
+=
修改列表并保留对同一对象的引用。另一方面,+
创建一个新的列表对象并将其分配给变量。它破坏了对原始对象的引用。