深拷貝,淺拷貝
阿新 • • 發佈:2018-12-10
1a = [11,22,33]#創造了一個實體[11,22,33],此時a指向這個實體,a可以 2#叫做源物件 3b = a #b也指向實體[11,22,33],b就叫做拷貝物件 4#!!!淺拷貝源物件與拷貝物件共用一份實體,僅僅時引用的變數的不同 5id(a)#輸出為2310978997768 6id(b)#輸出為2310978997768,淺拷貝的id號一樣 7 8 9 10import copy 11c = copy.deepcopy(a) 12id(c)#輸出為2310989166984,與a 的id號不一樣 13a.append(44) 14a #輸出為[11, 22, 33, 44] 15b #[11, 22, 33, 44] 表明深拷貝時拷貝物件和源物件彼此獨立 16c #[11, 22, 33] 17#深拷貝時拷貝物件和源物件彼此獨立,任何一個物件的改動對另一個不會造成影響
copy.deecopy()
1import copy
2c = [1,2,3,4]
3f = [5,6,7]
4t1 = [c,f]
5g = copy.deepcopy(t1)
6f.append(10)
7f #輸出為[5, 6, 7, 10]
8g[1] #輸出為[5, 6, 7]這二行可以看出當深拷貝一個物件時,若此物件裡面還有
9 #引用時,都會依次進行深拷貝
copy.copy()
1t1 = [c,f] 2t2 = (c,f) 3m1 = copy.copy(t1) 4m2 = copy.copy(t2) 5id(t1) #輸出為2783225450120 6id(m1) #輸出為2783225170312 7id(m2) #輸出為2783223573000 8id(t2) #輸出為2783223573000 9 10#因此可以看出當copy.copy的物件可變時會進行拷貝,若該物件裡面還有引用時直接指向就行,而不再進行拷貝, 11#若拷貝的物件不可變時,直接指向該物件,而不再拷貝