📜  Python中x = x + y和x += y之间的区别

📅  最后修改于: 2022-05-13 01:54:36.509000             🧑  作者: Mango

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 += yx = 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