- 对于不可变对象来说,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