Python中的赋值语言的实质,是改变变量与对象的绑定关系。
>>> l=[1,2,3] #l变量绑定了一个列表
>>> l2=l #l2与l绑定了同一个对象(列表)
>>> l.pop()
3
>>> l
[1, 2]
>>> l2
[1, 2]
>>> id(l)
139845581985736
>>> id(l2)
139845581985736
>>>
通过以上例子看出,当l2改变时候,l也会同时改变。(因为它们同时绑定一个对象)
采用拷贝的方式就可以在改变l2的时候,l1不会改变
>>> l=[1,2,3]
>>> l1=l.copy()
>>> l1.pop()
3
>>> l1
[1, 2]
>>> l
[1, 2, 3]
>>> id(l)
139845581985736
>>> id(l1)
139845581986504
>>>
- 浅拷贝:
是指在复制过程中,只复制一层变量,不会复制深层变量绑定对象的复制过程。
>>> l=[11,12,13]
>>> l1=[1,2,l]
>>> l2=l1.copy()
>>> l.reverse()
>>> l
[13, 12, 11]
>>> l1
[1, 2, [13, 12, 11]]
>>> 12
12
>>> l2
[1, 2, [13, 12, 11]]
>>> id(l1)
139845582867912
>>> id(l2)
139845582010760
>>>
- 深拷贝 deep copy
复制对象及对象关联的对象一起复制的过程
>>> import copy
>>> l1=[1,2,[3,4]]
>>> l2=copy.deepcopy(l1)
>>> del l2[2][1]
>>> l2
[1, 2, [3]]
>>> l1
[1, 2, [3, 4]]
>>>