Python中x = x + y和x += y之间的区别
我们经常使用x += y
而不是x = x + y
。那么,它们是相同的还是不同的呢?让我们在这里找到它。
示例 1:
x = [1, 2]
another_x = x
y = [3]
x += y
print(x)
print(another_x)
输出:
[1, 2, 3]
[1, 2, 3]
示例 2:
x = [1, 2]
another_x = x
y = [3]
x = x + y
print(x)
print(another_x)
输出:
[1, 2, 3]
[1, 2]
所以在这里我们发现两个代码几乎相似,但输出仍然存在差异。所以这背后的原因是,对于许多类型的对象, x += y
将就地修改x
引用的对象,而x = x + y
将创建一个新对象并将x
重新分配给它。如果您在某个地方仍然对对象有另一个引用,那么这种区别很重要,例如在这种情况下another_a
是对该对象的另一个引用。
但是,许多对象(例如数字和字符串)是“不可变的”——它们不能就地修改——对于这些对象, x += y
和x = x + y
通常会做完全相同的事情。但是,如果您编写自己的类,则可以自定义+
和+=
与该类的对象一起使用时所做的事情,并且如果您真的愿意,可以让它们做完全不同的事情。
示例 3:
x = "12345"
another_x = x
y = "67890"
x += y
print(x)
print(another_x)
输出:
1234567890
12345
示例 4:
x = "12345"
another_x = x
y = "67890"
x = x + y
print(x)
print(another_x)
输出:
1234567890
12345