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

python中的指针,v+=[]vs.v=v+;[],python,memory,operators,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+不同吗?为什么第一个不在内存中创建一个新对象,而另一个却在

很抱歉,由于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
分配一个新列表。查看其
id

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