首页 > 编程语言 > 详细

Python学习笔记函数之copy()和deepcopy()

时间:2018-09-16 12:56:51      阅读:150      评论:0      收藏:0      [点我收藏+]

随笔记录方便自己和同路人查阅。

#------------------------------------------------我是可耻的分割线-------------------------------------------

  在处理列表和字典时,尽管传递引用常常是最方便的方法,但如果函数修改了传入的列表或字典,你可能不希望

这些变动影响原来的列表或字典。要做到这一点,Python提供了名为copy的模块,其中包含copy()和deepcopy()函数。

第一个函数copy.copy(),可以用来复制列表或字典这样的可变值,而不是只复制引用。

  两者的区别是copy.copy()是这复制了列表或字典的值,但是引用还是同一个。而copy.deepcopy()是产生一个新的

引用使新的变量和被复制变量引用不同。看下面的示例代码:

#------------------------------------------------我是可耻的分割线-------------------------------------------

  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)

  运行结果:

技术分享图片

  根据结果可以看出,使用copy.copy()函数时,cheese是复制了spam列表引用,对spam列表操作时,也会对cheese列表产生影响。这也被称为浅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)

  运行结果:

技术分享图片

  根据结果可以看出,使用deepcopy()时,对spam列表操作不会对cheese列表产生影响,这是因为deepcopy()是产生一个新的引用,这样spam和cheese

是两个不同的引用所以在对spam列表操作时不会对cheese列表产生影响。

 

 

Python学习笔记函数之copy()和deepcopy()

原文:https://www.cnblogs.com/lirongyang/p/9538495.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!