为什么多重赋值对整数进行不同的引用,而不是列表或其他对象?
>>> a = b = 1
>>> a += 1
>>> a is b
>>> False
>>> a = b = [1]
>>> a.append(1)
>>> a is b
>>> True
最佳答案
在 int 示例中,您首先将同一对象分配给 a
和 b
,然后将 a
重新分配给另一个对象( a+1
的结果)。 a
现在指的是一个不同的对象。
在列表示例中,您将同一个对象分配给 a
和 b
,但是您没有做任何更改。 append
仅更改列表对象的内部状态,而不是其身份。因此它们保持不变。
如果您将 a.append(1)
替换为 a = a + [1]
,您最终会得到不同的对象,因为您再次分配了一个新对象对象(a+[1]
的结果)到 a
。
请注意,a+=[1]
的行为会有所不同,但这是一个整体 other question .
关于Python 多重赋值和引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31152195/