python深copy和浅copy区别对比解析


Posted in Python onDecember 26, 2019

这篇文章主要介绍了python深copy和浅copy区别对比解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

首先先看一段代码

import copy
 
a = [1, 2, 3, [4]]
b = a
c = a.copy()
d = copy.deepcopy(a)
e = copy.copy(a)
a.append(4)
a[3].append(5)
print('a值为 {} 地址为 {}'.format(a, id(a)))
print('b值为 {} 地址为 {}'.format(b, id(b)))
print('c值为 {}  地址为 {}'.format(c, id(c)))
print('d值为 {}    地址为 {}'.format(d, id(d)))
print('e值为 {}  地址为 {}'.format(e, id(e)))

执行结果:

a值为 [1, 2, 3, [4, 5], 4] 地址为 4555940360
b值为 [1, 2, 3, [4, 5], 4] 地址为 4555940360
c值为 [1, 2, 3, [4, 5]]  地址为 4555873544
d值为 [1, 2, 3, [4]]    地址为 4556227912
e值为 [1, 2, 3, [4, 5]]  地址为 4556227464

从结果中可以看出来:

b赋值的为a的内存地址,值会随着a的变化而变化---直接赋值,对象引用

c=a.copy()使用的为python自带的copy方法,从结果中可看出复制后c的地址与a的地址不一致,也就是c将a的值完全复制包括地址,其结果就是c的值不会随着a的值变化而变化---深copy,完全拷贝了父对象及其子对象

d和e使用的是python自带的copy模块中的copy方法和deepcopy方法:

其中d的值地址和a不一致,值也不会随着a的变化而变化---深copy,完全拷贝了父对象及其子对象

其中e中父级内容不随着a的变化而变化,但e中子list中内容会随着a的变化而变化---浅copy,拷贝父对象,不会拷贝对象的内部的子对象

print('a子对象值为 {} 地址为 {}'.format(a[3], id(a[3])))
print('e子对象值为 {} 地址为 {}'.format(a[3], id(a[3])))
结果:
a子对象值为 [4, 5] 地址为 4334486344
e子对象值为 [4, 5] 地址为 4334486344

由上可得出,python中的copy分为三种:

1、直接复制:也就是对象引用

2、浅拷贝:拷贝父对象,不会拷贝对象的内部的子对象。

3、深拷贝:完全拷贝了父对象及其子对象

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 多线程抓取图片效率对比
Feb 27 Python
Python中模块string.py详解
Mar 12 Python
python导出hive数据表的schema实例代码
Jan 22 Python
在windows下Python打印彩色字体的方法
May 15 Python
Sanic框架蓝图用法实例分析
Jul 17 Python
python 读取竖线分隔符的文本方法
Dec 20 Python
python实现石头剪刀布小游戏
Jan 20 Python
python函数的万能参数传参详解
Jul 26 Python
使用Tensorboard工具查看Loss损失率
Feb 15 Python
python中怎么表示空值
Jun 19 Python
浅谈Django前端后端值传递问题
Jul 15 Python
Python为何不支持switch语句原理详解
Oct 21 Python
详解python opencv、scikit-image和PIL图像处理库比较
Dec 26 #Python
torch 中各种图像格式转换的实现方法
Dec 26 #Python
python两个_多个字典合并相加的实例代码
Dec 26 #Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 #Python
python requests模拟登陆github的实现方法
Dec 26 #Python
python 实现按对象传值
Dec 26 #Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
Dec 26 #Python
You might like
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
PHP7扩展开发教程之Hello World实现方法示例
2017/08/03 PHP
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
2017/06/17 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
2020/11/05 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
关于python的list相关知识(推荐)
2017/08/30 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
python实现linux下抓包并存库功能
2018/07/18 Python
详解python持久化文件读写
2019/04/06 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
洛杉矶时尚女装系列:J.ING US
2019/03/17 全球购物
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
Hammitt官网:设计师手袋
2020/05/23 全球购物
Jdbc数据访问技术面试题
2012/03/30 面试题
2015年医院护理部工作总结
2015/04/23 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python
Python matplotlib多个子图绘制整合
2022/04/13 Python