Python 學習日記第六篇 -- 深淺拷貝
阿新 • • 發佈:2020-10-09
深淺拷貝:
1、字串和數字
importcopy #淺拷貝 copy.copy() #深拷貝 copy.deepcopy() ###################################################################################### a1="string" #a1=11 a2=a1 a3=copy.copy(a1) a4=copy.deepcopy(a1) print(id(a1)) print(id(a2)) print(id(a3)) print(id(a4)) ########## result: 2719424 2719424 2719424 2719424
由上,可以看出字串與數字,賦值、淺拷貝、深拷貝,其結果是一樣的,都指向了同一個記憶體地址
2、字典,列表,元組
1、賦值:只是建立了一個引用,記憶體地址不變 d1={'k1':'v1','k2':123,'k3':[11,'22',]} d2=d1 print(id(d1)) print(id(d2)) ########## result: 5349704 5349704
2、淺拷貝,在記憶體中額外建立第一層引用 d1={'k1':'v1','k2':123,'k3':[11,'22',]} d2=copy.copy(d1) print(id(d1)) print(id(d1['k3'])) print(id(d2['k3'])) print(id(d2)) ########## result: 34971976 35475168 35475168 35225192
3、深拷貝,在記憶體中建立除字串與數字外的所有層 d1={'k1':'v1','k2':123,'k3':[11,'22',]} d2=copy.deepcopy(d1) print(id(d1)) print(id(d1['k3'])) print(id(d2['k3'])) print(id(d2)) ########## result: 6922568 7425760 7361520 6922808
轉載於:https://blog.51cto.com/jiayimeng/1932127