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()
是產生一個新的引用,這樣spam
和cheese
是兩個不同的引用所以在對spam
列表操作時不會對cheese列表產生影響。
到此這篇關於Python 中的 copy()和deepcopy()的文章就介紹到這瞭,更多相關Python copy()和deepcopy()內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python基礎之變量的相關知識總結
- 淺析Python的對象拷貝和內存佈局
- python copy模塊中的函數實例用法
- python淺拷貝與深拷貝使用方法詳解
- Python基礎之賦值,淺拷貝,深拷貝的區別