深淺拷貝
阿新 • • 發佈:2017-07-04
tro import deepcopy nbsp imp 內存 ges ima p s
#import copy
#淺拷貝
#copy.copy()
#深拷貝
#copy.deepcopy()
#賦值
#=
#字符串和數字、copy在內存裏用的是同一地址
#對於 數字 和 字符串 而言,賦值、淺拷貝和深拷貝無意義,因為其永遠指向同一個內存地址。
import copy #字符串、數字 #a1 = 123123 #a2 = 123123 #a2 = a1 #print(id(a1)) #print(id(a2)) a1 = ‘sadasdasdasdasd‘ a3 =copy.deepcopy(a1) print(id(a1)) print(id(a3))
importcopy #其它、元組、列表、字典...... n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]} #賦值(id 一樣) #n2 = n1 #print(id(n1)) #print(id(n2))
#淺拷貝(id 不一樣) n3 = copy.copy(n1) print(id(n1)) print(id(n3))
#id一樣 print(id(n1[‘k3‘])) print(id(n3[‘k3‘]))
深拷貝,在內存中將所有的數據重新創建一份(排除最後一層,即:python內部對字符串和數字的優化)
importcopy #其它、元組、列表、字典...... n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]} #賦值(id 一樣) #n2 = n1 #print(id(n1)) #print(id(n2)) #淺拷貝(id 不一樣) #n3 = copy.copy(n1) n3 = copy.deepcopy(n1) print(id(n1)) print(id(n3)) #id一樣 print(id(n1[‘k3‘])) print(id(n3[‘k3‘]))
輸出:
35099032
35099272
35583160
35535848
深淺拷貝