python copy和deepcopy

copy模块

copy模块只有两个方法,copy和deepcopy,了解不同之前先说一个概念,组合对象

组合对象

组合对象包含了其它对象的对象,比如列表和元组,包含了原子类型的对象,所以是组合对象

copy和deepcopy的不同

copy和deepcopy是对针对组合对象来说的,原子类型的对象,没有copy和deepcopy的说法

copy浅复制

import copy
l1 = [1, 2, [3, 4]]
l2 = copy.copy(l1)
print l1
print l2
l2[2][0] = 50
print l1
print l2
#---- 结果 ----
[1, 2, [3, 4]]
[1, 2, [3, 4]]
[1, 2, [50, 4]]
[1, 2, [50, 4]]

 

浅复制对引用了其它类型(list,dict)的对象,只复制引用,不复制深层的数据对象,这个会引起数据的异常同步

 

deepcopy深复制

import copy
l1 = [1, 2, [3, 4]]
l2 = copy.deepcopy(l1)
print l1
print l2
l2[2][0] = 50
print l1
print l2
#---- 结果 ----
[1, 2, [3, 4]]
[1, 2, [3, 4]]
[1, 2, [3, 4]]
[1, 2, [50, 4]]

 

浅复制对引用了其它类型(list,dict)的对象,复制了深层的对象,数据的异常同步解决了

posted @ 2020-08-13 03:59  inhocho  阅读(10)  评论(0)    收藏  举报