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