1. 程式人生 > >python深淺拷貝deepcopy的簡單理解

python深淺拷貝deepcopy的簡單理解

以下是個人對Python深淺拷貝的通俗解釋,易於繞開復雜的Python資料結構儲存來進行理解!

  1. 高階語言中變數是對記憶體及其地址的抽象,Python的一切變數都是物件。
  2. 變數的儲存採用了引用語義的方式,儲存的只是一個變數的值所對應的地址資訊。
  3. 變數的每一次初始化(賦值),即將新的內容的地址賦給變數。
  4. 複雜資料結構儲存的是各個元素的值得儲存位置。
  5. 進行增刪改等操作時不改變資料本身的id,改變的各個元素的地址引用。
  6. 改變任何一個擁有相同id的變數時,其他相同id的變數也會相應改變。
  7. copy.copy(object),拷貝的是內巢狀結構的地址引用,當內巢狀結構發生變化時,淺拷貝相應的改變。
  8. copy.deepcopy(object),完全複製與變數相關的資料!跟別的操作不再有關係! 例項:
import copy
li = [4,5]
lts = [1,2,3,li]
lt_copy= copy.copy(lts)
lt_deepcopy = copy.deepcopy(lts)
lts.append(6)
lt_copy.append(7)
print(lts,lt_copy)    #輸出[1, 2, 3, [4, 5], 6] [1, 2, 3, [4, 5], 7]
li.append(8)          #內部表格li插入
print(lts,lt_copy,lt_deepcopy)
#輸出[1, 2, 3, [4, 5, 8], 6] [1, 2, 3, [4, 5, 8], 7] [1, 2, 3, [4, 5]]
#可以看到當對li操作時,lt_deepcopy不受影響!