python 深拷貝與淺拷貝理解


最近在回顧python編程理論知識,記錄筆記,免得忘記~

------------------------------------------------------淺拷貝------------------------------------------------------------------------

淺拷貝:當對象賦值(創建一個對象的,然後把它賦給另一個變量)時,Python並沒有拷貝這個對象,而是拷貝了這個對象的引用。

淺拷貝的方式:

1)完全的切片操作[:]

2)利用工廠函數,如:list()、dict()等

3)使用copy模塊的copy函數

如何判斷是拷貝了對象還是拷貝對象的引用?

通過id()內建函數來顯示每個對象的標識符,或者is()操作符也可以判斷兩個對象是否是同一個對象。

注意:對於字符串、數字、元組對象,都是不可變類型對象,在賦值時,實際是進行了深拷貝,可以測試發現兩個變量的id標識符是不同的。

--------------------------------------------------------深拷貝-----------------------------------------------------------------

深拷貝:創建了一個新的容器對象,包括原有對象元素(引用)全新拷貝的引用。

深拷貝方式:copy.deepcopy()函數。

拷貝操作的警告:

1)廢容器類型(如:數字、字符串和其他‘原子’類型的對象,像代碼、類型和xrange對象等)沒有拷貝一說,淺拷貝是用完全切片操作來完成的;

2)如果元組變量僅包含原子類型對象,對它的深拷貝將不會進行。

(解釋:進行深拷貝後,兩個對象的id()標識符是不同的,但是兩個對象內部原子類型對象id()標識符是相同的)

發佈了28 篇原創文章 · 獲贊 20 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章