在處理串列和字典時,盡管傳遞參考常常是最方便的方法,但如果函式修改了傳入的串列或字典,你可能不希望這些變動影響原來的串列或字典,要做到這一點,Python提供了名為copy的模塊,其中包含copy()和deepcopy()函式,
第一個函式copy.copy(),可以用來復制串列或字典這樣的可變值,而不是只復制參考,
兩者的區別是copy.copy()是這復制了串列或字典的值,但是參考還是同一個,而copy.deepcopy()是產生一個新的參考使新的變數和被復制變數參考不同,看下面的示例代碼:
1、copy.copy(),示例代碼:
import copy
spam = ['A','B','C','D',[1,2,3,4]]
cheese = copy.copy(spam)
spam[0] = 42
print(spam)
運行結果:
[42,'B','C','D',[1,2,3,4]]
根據結果可以看出,使用copy.copy()函式時,cheese是復制了spam串列參考,對spam串列操作時,也會對cheese串列產生影響,這也被稱為淺copy,
2、deepcopy.copy(),示例代碼:
#Python學習交流群:778463939
import copy
spam = ['A','B','C','D',[1,2,3,4]]
cheese = copy.deepcopy(spam)#不同部分
spam[0] = 42
print(spam)
運行結果:
[42,'B','C','D',[1,2,3,4]]
根據結果可以看出,使用deepcopy()時,對spam串列操作不會對cheese串列產生影響,這是因為deepcopy()是產生一個新的參考,這樣spam和cheese
是兩個不同的參考所以在對spam串列操作時不會對cheese串列產生影響,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/264692.html
標籤:Python
