小编典典

Python多重分配和参考

python

为什么多重赋值为int而不是列表或其他对象提供不同的引用?

>>> a = b = 1
>>> a += 1
>>> a is b
>>>     False
>>> a = b = [1]
>>> a.append(1)
>>> a is b
>>>     True

阅读 195

收藏
2021-01-20

共1个答案

小编典典

在int示例中,您首先将a和分配了相同的对象b,然后a使用另一个对象(的结果a+1)重新分配。a现在指的是另一个对象。

在列表示例中,您为a和分配了相同的对象b,但是您并没有做任何更改。append仅更改列表对象的内部状态,而不更改其标识。因此,它们保持不变。

如果替换a.append(1)a = a + [1],则最终会得到不同的对象,因为再次需要为分配一个新对象(的结果a+[1]a

请注意,这a+=[1]会有所不同,但这是另一个问题

2021-01-20