python中的指针,v + = [] vs v = v + []

时间:2015-08-13 08:54:47

标签: python memory operators

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

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

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

1 个答案:

答案 0 :(得分:1)

v=v+[],您要为v+[]分配一个新列表v。查看其id

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