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的内存
Dec 17 Python
详解Python 装饰器执行顺序迷思
Aug 08 Python
Python 输入一个数字判断成绩分数等级的方法
Nov 15 Python
Python文件如何引入?详解引入Python文件步骤
Dec 10 Python
对python操作kafka写入json数据的简单demo分享
Dec 27 Python
python 3.6.7实现端口扫描器
Sep 04 Python
PyTorch加载预训练模型实例(pretrained)
Jan 17 Python
用Python做一个久坐提醒小助手的示例代码
Feb 10 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
Feb 13 Python
PyQt5多线程防卡死和多窗口用法的实现
Sep 15 Python
如何获取numpy array前N个最大值
May 14 Python
python垃圾回收机制原理分析
Apr 13 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数组去重实例及分析
2013/11/26 PHP
PHP解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
PHP反向代理类代码
2014/08/15 PHP
PHP中使用xmlreader读取xml数据示例
2014/12/29 PHP
PHP解析RSS的方法
2015/03/05 PHP
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
AngularJS入门教程之服务(Service)
2016/07/27 Javascript
关于js原型的面试题讲解
2016/09/25 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
JS数组索引检测中的数据类型问题详解
2021/01/11 Javascript
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
2018/02/23 Python
PyQt5 QTableView设置某一列不可编辑的方法
2019/06/25 Python
python 表格打印代码实例解析
2019/10/12 Python
python 求定积分和不定积分示例
2019/11/20 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
2020/05/10 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
2020/06/06 Python
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
早晨薰衣草在线女性精品店:Morning Lavender
2021/01/04 全球购物
为数据库创建索引都需要注意些什么
2012/07/17 面试题
师范生自我鉴定
2014/03/20 职场文书
学雷锋月活动总结
2014/04/25 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
班级心理活动总结
2014/07/04 职场文书
企业挂职心得体会
2014/09/10 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL
python数字图像处理之图像的批量处理
2022/06/28 Python