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
如果这个问题在某处得到答复,我很抱歉,因为 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