您现在的位置是:群英 > 开发技术 > Python语言
python中的copy和deepcopy函数使用有啥不同?
Admin发表于 2021-11-20 17:46:031363 次浏览

    这篇文章给大家分享的是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函数的内容,大家可以关注群英网络其它相关文章。

文本转载自脚本之家

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: copy和deepcopy
相关信息推荐
2022-10-11 09:18:04 
摘要:在高并发下需要对应用进行读写分离,配置多数据源,即写操作走主库,读操作则走从库,主从数据库负责各自的读和写,缓解了锁的争用,提高了读取性能,这篇文章主要给大家介绍了关于SpringBoot项目中如何实现MySQL读写分离的相关资料,需要的朋友可以参考下
2022-12-24 11:47:00 
摘要:4种方法:1、不指定键名的直接为数组元素赋值,语法“$数组名[]=值1;$数组名[]=值2;...”;2、用array_unshift(),语法“array_unshift(数组,值1,值2...)”;3、用array_push(),语法“array_push(数组,值1,值2...)”;3、用“array_splice(数组,位置,0,array(值1,值2...))”语句。
2022-09-08 18:02:18 
摘要:es6中static修饰符是修饰成员变量和成员方法的意思,static是静态的意思,也即定义静态方法;static修饰成员变量表示该成员变量在内存中只存储一份,可以被共享访问和修改,类通过static定义静态方法。
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部