Python 中的 copy()和deepcopy()

前言:

在處理列表和字典時,盡管傳遞引用常常是最方便的方法,但如果函數修改瞭傳入的列表或字典,可能不希望這些變動影響原來的列表或字典。要做到這一點,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()是產生一個新的引用,這樣spamcheese

是兩個不同的引用所以在對spam列表操作時不會對cheese列表產生影響。

到此這篇關於Python 中的 copy()和deepcopy()的文章就介紹到這瞭,更多相關Python  copy()和deepcopy()內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: