最近在回顧python編程理論知識,記錄筆記,免得忘記~
------------------------------------------------------淺拷貝------------------------------------------------------------------------
淺拷貝:當對象賦值(創建一個對象的,然後把它賦給另一個變量)時,Python並沒有拷貝這個對象,而是拷貝了這個對象的引用。
淺拷貝的方式:
1)完全的切片操作[:]
2)利用工廠函數,如:list()、dict()等
3)使用copy模塊的copy函數
如何判斷是拷貝了對象還是拷貝對象的引用?
通過id()內建函數來顯示每個對象的標識符,或者is()操作符也可以判斷兩個對象是否是同一個對象。
注意:對於字符串、數字、元組對象,都是不可變類型對象,在賦值時,實際是進行了深拷貝,可以測試發現兩個變量的id標識符是不同的。
--------------------------------------------------------深拷貝-----------------------------------------------------------------
深拷貝:創建了一個新的容器對象,包括原有對象元素(引用)全新拷貝的引用。
深拷貝方式:copy.deepcopy()函數。
拷貝操作的警告:
1)廢容器類型(如:數字、字符串和其他‘原子’類型的對象,像代碼、類型和xrange對象等)沒有拷貝一說,淺拷貝是用完全切片操作來完成的;
2)如果元組變量僅包含原子類型對象,對它的深拷貝將不會進行。
(解釋:進行深拷貝後,兩個對象的id()標識符是不同的,但是兩個對象內部原子類型對象id()標識符是相同的)