上一篇文章: 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