上一篇文章: Python文件夹处理
下一篇文章: Python==与is对比
浅拷贝:拷贝了引用,没有拷贝内容。
实例:segmentfault
a=[1,2,3] b=a print("a的id:",id(a)) print("b的id:",id(b)) a.append(4) print(a) print(b)
结果:app
a=[1,2,3] b=a print("a的id:",id(a)) print("b的id:",id(b)) a.append(4) print(a) print(b)
深拷贝:对于一个对象全部层次的拷贝(递归)。使用copy.deepcopy()完成深拷贝code
实例:对象
import copy a=[1,2,3] b=[4,5,6] c=[a,b] d=c e=copy.deepcopy(c) print("c的值",c) print("d的值",d) print("e的值",e) print("c的id:",id(c)) print("d的id:",id(d)) print("e的id:",id(e)) a.append(7) print("c的值",c) print("d的值",d) print("e的值",e) print("c的id:",id(c)) print("d的id:",id(d)) print("e的id:",id(e))
结果:递归
c的值 [[1, 2, 3], [4, 5, 6]] d的值 [[1, 2, 3], [4, 5, 6]] e的值 [[1, 2, 3], [4, 5, 6]] c的id: 4329011592 d的id: 4329011592 e的id: 4333645768 c的值 [[1, 2, 3, 7], [4, 5, 6]] d的值 [[1, 2, 3, 7], [4, 5, 6]] e的值 [[1, 2, 3], [4, 5, 6]] c的id: 4329011592 d的id: 4329011592 e的id: 4333645768
实例:get
import copy a=[1,2,3] b=copy.copy(a) print("a的id:",id(a)) print("b的id:",id(b)) a.append(4) print(a) print(b) #不可变类型 c=(1,2,3) d=copy.copy(c) print("c的id:",id(c)) print("d的id:",id(d))
结果:import
a的id: 4372057096 b的id: 4372055816 [1, 2, 3, 4] [1, 2, 3] c的id: 4372006736 d的id: 4372006736