python中deepcopy函数_Python学习笔记函数之copy()和deepcopy()
隨筆記錄方便自己和同路人查閱。
#------------------------------------------------我是可恥的分割線-------------------------------------------
在處理列表和字典時(shí),盡管傳遞引用常常是最方便的方法,但如果函數(shù)修改了傳入的列表或字典,你可能不希望
這些變動影響原來的列表或字典。要做到這一點(diǎn),Python提供了名為copy的模塊,其中包含copy()和deepcopy()函數(shù)。
第一個(gè)函數(shù)copy.copy(),可以用來復(fù)制列表或字典這樣的可變值,而不是只復(fù)制引用。
兩者的區(qū)別是copy.copy()是這復(fù)制了列表或字典的值,但是引用還是同一個(gè)。而copy.deepcopy()是產(chǎn)生一個(gè)新的
引用使新的變量和被復(fù)制變量引用不同。看下面的示例代碼:
#------------------------------------------------我是可恥的分割線-------------------------------------------
1、copy.copy(),示例代碼:
#
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
import copy
spam = ['A','B','C','D',[1,2,3,4]]
cheese = copy.copy(spam)
spam[0] = 42
print(spam)
運(yùn)行結(jié)果:
根據(jù)結(jié)果可以看出,使用copy.copy()函數(shù)時(shí),cheese是復(fù)制了spam列表引用,對spam列表操作時(shí),也會對cheese列表產(chǎn)生影響。這也被稱為淺copy。
2、deepcopy.copy(),示例代碼:
#
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
import copy
spam = ['A','B','C','D',[1,2,3,4]]
cheese = copy.deepcopy(spam)#不同部分
spam[0] = 42
print(spam)
運(yùn)行結(jié)果:
根據(jù)結(jié)果可以看出,使用deepcopy()時(shí),對spam列表操作不會對cheese列表產(chǎn)生影響,這是因?yàn)閐eepcopy()是產(chǎn)生一個(gè)新的引用,這樣spam和cheese
是兩個(gè)不同的引用所以在對spam列表操作時(shí)不會對cheese列表產(chǎn)生影響。
總結(jié)
以上是生活随笔為你收集整理的python中deepcopy函数_Python学习笔记函数之copy()和deepcopy()的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html文本最小长度,CSS中处理不同长
- 下一篇: 在python中可以使用for作为变量名