Python 深拷貝與淺拷貝

通過一個簡單的例子來理解深拷貝與淺拷貝:

例1:比如有如下一段代碼:


普通的賦值操作就相當于淺拷貝,不會復制對象中的內(nèi)容,只會將原有的內(nèi)存地址賦值給新變量,這兩個對象指向同一塊內(nèi)存地址,因此,兩個對象的ID值是相同的。

例2:在上一代碼基礎上進行深拷貝操作


對nums進行深拷貝操作后,不論是外層對象,還是內(nèi)層引用的對象,都會重新開辟一個新的內(nèi)存空間,因此進行深拷貝后的ID值是不同的。

例3:對列表進行添加操作


例4:進行淺拷貝操作


當對象中的元素又引用了其他對象時,copy()方法只會對外層對象創(chuàng)建新的內(nèi)存空間,內(nèi)層引用不會開辟新的內(nèi)存空間,依然使用原來的對象,因此當原列表進行添加操作后,會影響copy()方法創(chuàng)建出的對象。

例5:將nums的類型由列表變?yōu)樵M


將nums變?yōu)樵M后,deepcopy()方法仍會開辟新的內(nèi)存空間,內(nèi)層對象不會受原來對象變化的影響

例6:將例5中的deepcopy()換成copy()


?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容