淺拷貝與深拷貝的區別

2021-09-02 13:55:49 字數 510 閱讀 2933

在python中有乙個copy模組。

copy.copy 是淺拷貝

copy.deepcopy 是深拷貝

對於不可變型別,無論是淺拷貝還是深拷貝都只是指向作用,沒有進行拷貝,對於可變型別copy.copy 與copy.deepcopy存在差距:

import copy

a = [1,2,3]

b = [4,5]

c = [a,b]

d = copy.copy(c)

e = copy.deepcopy(c)

print(d)

print(e)

上述**輸出的d為[[1,2,3,],[4,5,6]],而e為[[1,2,3],[4,5]],由此可以看出使用copy淺拷貝時,當被拷貝的資料發生改變時,copy的資料也會跟著改變,deepcopy的資料不會改變。可以理解為copy是開闢了空間後,裡面的元素指向了被複製資料元素的引用,而deepcopy是 直接開闢空間並且給複製來的資料重新開闢空間進行儲存。

淺拷貝與深拷貝的區別

簡單的來說就是,在有指標的情況下,淺拷貝只是增加了乙個指標指向已經存在的記憶體,而深拷貝就是增加乙個指標並且申請乙個新的記憶體,使這個增加的指標指向這個新的記憶體,採用深拷貝的情況下,釋放記憶體的時候就不會出現在淺拷貝時重複釋放同一記憶體的錯誤!我列舉乙個例子來說吧 你正在編寫c 程式中有時用到,操...

淺拷貝與深拷貝的區別

簡單的來說就是,在有指標的情況下,淺拷貝只是增加了乙個指標指向已經存在的記憶體,而深拷貝就是增加乙個指標並且申請乙個新的記憶體,使這個增加的指標指向這個新的記憶體,採用深拷貝的情況下,釋放記憶體的時候就不會出現在淺拷貝時重複釋放同一記憶體的錯誤!我列舉乙個例子來說吧 你正在編寫c 程式中有時用到,操...

深拷貝與淺拷貝的區別

參考 先考慮一種情況,對乙個已知物件進行拷貝,編譯系統會自動呼叫一種建構函式 拷貝建構函式,如果使用者未定義拷貝建構函式,則會呼叫預設拷貝建構函式。先看乙個例子,有乙個學生類,資料成員時學生的人數和名字 include using namespace std class student studen...