在int示例中,您首先将
a和分配了相同的对象
b,然后
a使用另一个对象(的结果
a+1)重新分配。
a现在指的是另一个对象。
在列表示例中,您为
a和分配了相同的对象
b,但是您并没有做任何更改。
append仅更改列表对象的内部状态,而不更改其标识。因此,它们保持不变。
如果替换
a.append(1)为
a = a + [1],则最终会得到不同的对象,因为再次需要为分配一个新对象(的结果
a+[1])
a。
请注意,这
a+=[1]会有所不同,但这是另一个问题。

在int示例中,您首先将
a和分配了相同的对象
b,然后
a使用另一个对象(的结果
a+1)重新分配。
a现在指的是另一个对象。
在列表示例中,您为
a和分配了相同的对象
b,但是您并没有做任何更改。
append仅更改列表对象的内部状态,而不更改其标识。因此,它们保持不变。
如果替换
a.append(1)为
a = a + [1],则最终会得到不同的对象,因为再次需要为分配一个新对象(的结果
a+[1])
a。
请注意,这
a+=[1]会有所不同,但这是另一个问题。