• 对于不可变对象来说,x += 1 和 x = x + 1 没有区别,都会导致新对象的创建。 常见的不可变对象如:int, float, str, set, tuple.
In [30]: x = 1

In [31]: id(x)
Out[31]: 94310689461280

In [32]: x += 1

In [33]: id(x)
Out[33]: 94310689461312

In [34]: x = x + 1

In [35]: id(x)
Out[35]: 94310689461344
  • 对于可变对象来说,两者不同。x += 1不会创建新的对象,而x = x + 1 会创建一个新的对象。
In [46]: x = [1,2]

In [47]: id(x)
Out[47]: 140323167765064

In [48]: x += [1,1]

In [49]: id(x)
Out[49]: 140323167765064

In [50]: x = x + [1, 1]

In [51]: id(x)
Out[51]: 140323167992456