Ell*_*sky 3 python list variable-assignment
为什么多个赋值对int有明确的引用,而不是列表或其他对象?
>>> a = b = 1 >>> a += 1 >>> a is b >>> False >>> a = b = [1] >>> a.append(1) >>> a is b >>> True
shx*_*hx2 7
在整型例中,首先分配相同的对象到两个a和b,但随后重新分配a与另一个对象(的结果a+1).a现在指的是一个不同的对象.
a
b
a+1
在列表例如,分配相同的对象既a和b,但你没有做任何事情来改变这种状况.append仅更改列表对象的内部状态,而不是其标识.因此它们保持不变.
append
如果替换a.append(1)为a = a + [1],则最终会得到不同的对象,因为再次分配一个新对象(结果a+[1])a.
a.append(1)
a = a + [1]
a+[1]
请注意,a+=[1]行为会有所不同,但这是另一个问题.
a+=[1]
归档时间:
10 年,4 月 前
查看次数:
823 次
最近记录:
6 年,1 月 前