浅拷贝copy(“=”)和深拷贝(“copy.deepcopy()”)
python中对于对象的拷贝分为浅拷贝(copy)和深拷贝(deepcopy)两种方式。
其中浅拷贝由“=”完成。而深拷贝由copy模块中deepcopy()函数担任。
浅拷贝和深拷贝的区别是:
浅拷贝只是将原对象在内存中引用地址拷贝过来了。让新的对象指向这个地址。
而深拷贝是将这个对象的所有内容遍历拷贝过来了,相当于跟原来没关系了,所以如果你这时候修改原来对象的值跟他没关系了,不会随之更改。
我觉得深拷贝和浅拷贝的区别在于:
对于浅拷贝来说,如果有一方的内容发生了变化,另一方有可能也会发生变化
而深拷贝,无论哪一方发生什么样的变化,另一方都不会发生改变。
小例子:
深拷贝的一个例子(我们通过深拷贝创建了两个生成器“genA2B_ema”以及“genB2A_ema”):
self.genA2B = ResnetGenerator(input_nc=3, output_nc=3, ngf=self.args.ch, n_blocks=self.args.n_res, img_size=self.args.img_size, args=self.args).to(self.args.device)self.genB2A = ResnetGenerator(input_nc=3, output_nc=3, ngf=self.args.ch, n_blocks=self.args.n_res, img_size=self.args.img_size, args=self.args).to(self.args.device)self.genA2B_ema = copy.deepcopy(self.genA2B).eval().requires_grad_(False)self.genB2A_ema = copy.deepcopy(self.genB2A).eval().requires_grad_(False)
具体的用法看以下链接:
Python中copy,deepcopy,=之深拷贝浅拷贝使用详解_涤生手记大数据-CSDN博客_python中deepcopy的用法
Python---copy()、deepcopy()与赋值的区别_飘过的春风-CSDN博客_copy.deepcopy
浅拷贝copy(“=”)和深拷贝(“copy.deepcopy()”)相关推荐
- Python 玩转数据 5 - 图解 Python 赋值,浅拷贝 copy.copy() 和 深拷贝 copy.deepcopy() 原理
引言 上面文章有介绍 Python 动态类型 共享引用等相关知识,有这个基础,我们来深入研究一下 Python 赋值,拷贝的原理,有涉及到可变类型和不可变类型的不同处理.更多 Pyton 进阶系列文章 ...
- .NET深入学习笔记(4):深拷贝与浅拷贝(Deep Copy and Shallow Copy)
今天继续利用准备WSE安全开发文章的空闲时间,完善<.NET深入学习笔记>系列(基本都是.Net重要的知识点,我都做了详细的总结,是什么.为什么.和怎么实现).想必很多人也接触过这两个概念 ...
- python中的浅拷贝与深拷贝——copy()
1.copy()方法用来拷贝列表元素 1 a = [1, 2, 3] 2 # 拷贝 3 b = a.copy() 4 print('a = ', a, '\n', 'b = ', b) 5 6 # 执 ...
- 【Python 必会技巧】copy 模块中 copy() 与 deepcopy() 函数的区别
Python 中赋值语句不复制对象,而是在目标和对象之间创建绑定关系.对于自身可变或者包含可变项的集合对象,开发者有时会需要生成其副本用于改变操作,进而避免改变原对象.copy 模块提供了通用的浅层复 ...
- python deepcopy报错_AttributeError: module 'copy' has no attribute 'deepcopy'
在windows中安装了python3.5,然后安装了splinter和firefox浏览器. 在python的命令行中执行下边2条语句能成功打开火狐浏览器: >>> from sp ...
- python中的shallow copy 和 deep copy
Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块. 1.copy.copy 浅拷贝 只拷贝父对象 2.copy.deepcopy 深拷贝 拷贝父对象及其子 ...
- 关于python深copy与浅copy的一点理解
一直对python深copy和浅copy似懂非懂的状态,看了这篇文章,觉得自己懂了很多,给各位参考! 出处:https://www.cnblogs.com/fandx/p/10462913.html ...
- 【ObjectC—浅copy和深copy】
一.OC设计copy的目的 为了能够从源对象copy一个新的对象副本,改变新对象(副本)的时候,不会影响到原来的对象. 二.实现copy协议 OC提供了两种copy方法:copy和mutableCop ...
- Python:序列的copy() 方法和 copy 模块
一.序列中的 copy() 方法 此方法为浅度复制:复制的数会随着被复制数的嵌套序列的元素的改变而改变: 功能:将一个列表复制给另一个列表 格式:list_1 = list_2.copy(),(字典. ...
- python 深copy_python中的深copy和浅copy
bytes Python bytes/str bytes 在Python3中作为一种单独的数据类型,不能拼接,不能拼接,不能拼接 >>> '€20'.encode('utf-8') ...
最新文章
- max分发-(网络系统克隆)
- 支付系统信息流和资金流
- SAP云平台部署HTML5应用时的错误消息Failed to report quota consumption
- sql2012一段时间无法连接报53错误
- C语言——输出*菱形
- 明晚直播丨一次特殊的 Oralce 硬解析性能问题的技术分享
- C#解析HL7协议数据2.X
- java Ofd 转图片_OFD文件怎么转换成图片
- 国际信息安全管理标准体系--BS7799
- kube-scheduler源码分析(三)之 scheduleOne
- 维刻柠檬鲜果冰怎么样?
- 为什么学校计算机没有声音,电脑为什么没声音,教您电脑为什么没声音
- HTML前端连接go语言后段,一次完整的浏览器请求响应过程-Go语言中文社区
- Python中的打包与解包
- python中五个一行输出_python 如何将一系列数字十个一行输出
- 微信投票1人1票php制作,微信投票怎么刷票,微信人工投票1毛一票
- 福建2013年度翻译专业资格考试工作通知
- 项目四总结:MySQL数据表的检索
- 2019张小龙微信公开课精华整理(未完待续....)
- 系统试运行报告是谁写的_煤矿安全监控系统升级改造验收方案