不少人在學習python3的時候,在字典部分copy和deepcopy感到很困惑,如今針對這兩個方法進行區分,即一種是淺複製(copy),一種是深度複製(deepcopy)。python
開頭先下個結論app
|
字典數據類型的copy函數,當簡單的值替換的時候,原始字典和複製過來的字典之間互不影響,可是當添加,刪除等修改操做的時候,二者之間會相互影響。學習
廢話很少,上代碼示例吧:spa
代碼以下:對象 from copy import deepcopyit d = {}table d["names"] = ["Alfred","Bertrand"]class b = d.copy() b["names"] = "bob" # 字典數據類型的copy函數,當簡單的值替換的時候,原始字典和複製過來的字典之間互不影響 print("#字典數據類型的copy函數,當簡單的值替換的時候,原始字典和複製過來的字典之間互不影響") print(b) print(d) c = d.copy() dc = deepcopy(d) # 字典數據類型的copy函數,可是當添加,刪除等修改操做的時候,二者之間會相互影響。 print("#字典數據類型的copy函數,可是當添加,刪除等修改操做的時候,二者之間會相互影響。") d["names"].append("Clive") print(d) print(c) #deepcopy深度複製,在這裏我理解的是徹底複製而後變成一個新的對象, # 複製的對象和被複制的對象沒有任何關係,彼此之間不管怎麼改變都相互不影響。 print("dc是深度copy(deepcopy):") print(dc) |
結果: #字典數據類型的copy函數,當簡單的值替換的時候,原始字典和複製過來的字典之間互不影響 {'names': 'bob'} {'names': ['Alfred', 'Bertrand']} #字典數據類型的copy函數,可是當添加,刪除等修改操做的時候,二者之間會相互影響。 {'names': ['Alfred', 'Bertrand', 'Clive']} {'names': ['Alfred', 'Bertrand', 'Clive']} dc是深度copy(deepcopy): {'names': ['Alfred', 'Bertrand']} |