Python += 和 + 运算符与列表的区别

问题描述 投票:0回答:1

我观察到在列表中使用

+=
+
运算符时 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
现在引用不同的对象。虽然
+=
通常被认为是列表连接的语法糖,但这种行为与这种理解相矛盾。

有人可以澄清

+=
+
在与列表一起使用时的行为差异吗?我有兴趣了解底层机制。

python list
1个回答
0
投票

根据我的理解,

+=
修改列表并保留对同一对象的引用。另一方面,
+
创建一个新的列表对象并将其分配给变量。它破坏了对原始对象的引用。

© www.soinside.com 2019 - 2024. All rights reserved.