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 相关文章推荐
Python3实现生成随机密码的方法
Aug 23 Python
python使用wmi模块获取windows下的系统信息 监控系统
Oct 27 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
Mar 23 Python
pycharm创建一个python包方法图解
Apr 10 Python
Django CBV类的用法详解
Jul 26 Python
基于pytorch的保存和加载模型参数的方法
Aug 17 Python
Python turtle绘画象棋棋盘
Aug 21 Python
python如何从文件读取数据及解析
Sep 19 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
Oct 23 Python
pandas.DataFrame.drop_duplicates 用法介绍
Jul 06 Python
浅谈anaconda python 版本对应关系
Oct 07 Python
举例讲解Python装饰器
Dec 24 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
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
PHP获取文件绝对路径的代码(上一级目录)
2011/05/29 PHP
php的数组与字符串的转换函数整理汇总
2013/07/18 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
基于js disabled="false"不起作用的解决办法
2013/06/26 Javascript
JQuery实现鼠标移动到图片上显示边框效果
2014/01/09 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
详解vue 实例方法和数据
2017/10/23 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
js实现搜索提示框效果
2020/09/05 Javascript
js实现简易ATM功能
2020/10/27 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
[50:22]完美盛典-2018年度红毯走秀
2018/12/16 DOTA
python实现NB-IoT模块远程控制
2018/06/20 Python
python3实现域名查询和whois查询功能
2018/06/21 Python
Puppeteer使用示例详解
2019/06/20 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
阿迪达斯芬兰官方网站:adidas芬兰
2017/01/30 全球购物
生物技术毕业生自荐信
2013/10/23 职场文书
励志演讲稿大全
2014/08/21 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
考研英语辞职信
2015/05/13 职场文书
2015年司法局工作总结
2015/05/22 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android