首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
浅拷贝和深拷贝
时间:
2015-06-10 15:59:52
阅读:
104
评论:
0
收藏:
0
[点我收藏+]
标签:
要想称为一个python高手,首先应该注意对象的变更操作和赋值,它们都是针对对象的引用操作的,如果你想修改一个对象而且想让原始的对象不受影响,那你就需要对象复制,你可以使用copy中的两个方法来实现需求,一般的,可以使用copy.copy,它可以进行对象的浅复制,它复制了对象,但对于对象中的元素,依然使用引用,
copy.copy中如果有容器元素的话,复制的也是容器元素的引用。如果希望复制一个容器对象,以及它里面的所有元素,使用copy.deepcopy,这个方法是copy.copy方法的递归版,如果你需要完全复制,这是唯一的方法。
如果项复制一个列表,使用list(L)
要复制一个字典,使用dict(d)
要复制一个集合,使用set(s)
我们得出一个规律,如果你要复制一个对象o,它属于内建类型t,那么你可以使用t(o)来获得一个拷贝
dict也提供了一个复制版本,dict.copy,这个和dict(d)是一样的,推荐使用后者,代码的一致性,并且也少了几个字符
要复制一个别的类型,无论是你自己写的,还是使用库中的,使用copy.copy,如果你自己写的一个类,没必要废神去写clone和copy函数,如果你想定义自己的类复制的方式,实现__copy__或则__getstat__和__setstat__,如果你想定义自己类型的deepcopy,实现方法__deepcopy__
注意,你不用复制不可变对象,因为你不用担心修改他们,如果你想尝试赋值,依然会得到原来的。
浅拷贝和深拷贝
标签:
原文地址:http://my.oschina.net/yangting880815/blog/465082
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!