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 相关文章推荐
在Django的上下文中设置变量的方法
Jul 20 Python
Python基于PycURL自动处理cookie的方法
Jul 25 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
Jun 12 Python
python矩阵的转置和逆转实例
Dec 12 Python
python 输出所有大小写字母的方法
Jan 02 Python
python3.4+pycharm 环境安装及使用方法
Jun 13 Python
python的常见矩阵运算(小结)
Aug 07 Python
Python aiohttp百万并发极限测试实例分析
Oct 26 Python
python shell命令行中import多层目录下的模块操作
Mar 09 Python
PyTorch-GPU加速实例
Jun 23 Python
python爬虫破解字体加密案例详解
Mar 02 Python
Python编程根据字典列表相同键的值进行合并
Oct 05 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
php 模拟POST|GET操作实现代码
2010/07/20 PHP
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
2016/02/15 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
PHP中关键字interface和implements详解
2017/06/14 PHP
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
jQuery.holdReady()使用方法
2014/05/20 Javascript
$.each遍历对象、数组的属性值并进行处理
2014/07/18 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
如何利用JQuery实现从底部回到顶部的功能
2016/12/27 Javascript
详解Angular2 之 结构型指令
2017/06/21 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
python执行等待程序直到第二天零点的方法
2015/04/23 Python
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
Python中Selenium模拟JQuery滑动解锁实例
2017/07/26 Python
浅析python3中的os.path.dirname(__file__)的使用
2018/08/30 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
Unix里面如何在后台运行程序
2016/10/14 面试题
客户代表自我评价范例
2013/09/24 职场文书
2013届毕业生求职信范文
2013/11/20 职场文书
房屋改造计划书
2014/01/10 职场文书
高中毕业生的个人自我评价
2014/02/21 职场文书
教职工代表大会主持词
2014/04/01 职场文书
大学共青团员个人自我评价
2014/04/16 职场文书
小学运动会演讲稿
2014/08/25 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
领导班子“四风问题”“整改方案
2014/10/02 职场文书
关于迟到的检讨书
2015/05/06 职场文书
学校推普周活动总结
2015/05/07 职场文书