python、v+=[] 与 v=v+[] 中的指针

Pointers in python, v+=[] vs. v=v+[]

如果这个问题在某处得到答复,我很抱歉,因为 python (2.7) 在这里是一个很大的话题,但我什至不确定如何查找它。 我有这个代码。

>>> v=[1,2,3]
>>> f=v
>>> v+=[]
>>> f is v
True
>>> v=v+[]
>>> f is v
False

可以向我解释为什么 += 运算符与 v=v+ 不同吗?为什么第一个不在内存中创建新对象而另一个创建新对象,尽管它们必然是等价的?

v=v+[],您将新列表 v+[] 分配给 v。查看其 id:

>>> v = [1,2,3]
>>> f=v
>>> id(v)
35713992L
>>> v+=[]
>>> id(v)
35713992L
>>> v=v+[]
>>> id(v)
35692232L