請簡述賦值, 深拷貝和淺拷貝的區別?(python中如何拷貝一個對象?)
直接賦值(li1 = li): 只傳遞對象的引用, li1指向對象li的內存地址空間,
所以, 原有列表li改變, 被賦值的li1也會作相應的改變.python
當深拷貝和淺拷貝, 針對的對象所有是不可變數據類型時, 二者效果相同;
當深拷貝和淺拷貝, 針對的對象包含是可變數據類型時, 二者纔有上述區別;ide
#全部的數值類型和布爾類型, str是不可變數據類型,
#list是可變數據類型;對象
#淺拷貝的實現:
#- li.copy()
#- li[:]
#- copy.copy(li)內存
#實現深拷貝:
#- copy.deepcopy(li)it
若是copy.copy)拷貝的是元組,那麼它不會進行淺拷貝,僅僅是指向
由於元組是不可變數據類型,那麼意味着數據必定不能修改,
所以copy.copy()
的時候它會自動判斷是指向class
若是,用copy.copy() copy.deepcopy()對一個所有是不可變類型
的數據進行數據拷貝的時候,那麼它們的結果相同,都是引用import
若是拷貝的是一個擁有可變類型的數據,那麼deepcopy依然是深拷貝,
copy是淺拷貝變量
檔一個變量==xx的時候,約定爲:指向地址的過程
淺拷貝:copy.copy()
深拷貝:copy.deepcopy()數據類型