copy和deepcopy

copy仅拷贝对象本身,而不对中的子对象进行拷贝,故对子对象进行修改也会随着修改。
deepcopy是真正意义上的复制,即从新开辟一片空间。我们经常说的复制实际上就是deepcopy.
—–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。
—–而浅复制并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。这就和我们寻常意义上的复制有所不同了。

>>> import copy
>>> a=[1,2,3,[2,3],4]
>>> b=a
>>> c=copy.copy(a)
>>> d=copy.deepcopy(a)
>>> a.append(9)
>>> a
[1, 2, 3, [2, 3], 4, 9]
>>> b
[1, 2, 3, [2, 3], 4, 9]
>>> c
[1, 2, 3, [2, 3], 4]
>>> d
[1, 2, 3, [2, 3], 4]
>>> a[3][0]=8
>>> a
[1, 2, 3, [8, 3], 4, 9]
>>> b
[1, 2, 3, [8, 3], 4, 9]
>>> c
[1, 2, 3, [8, 3], 4]
>>> d
[1, 2, 3, [2, 3], 4]
>>>

猜你喜欢

转载自www.cnblogs.com/pacino12134/p/9907881.html