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检测某个变量是否有定义的方法
May 20 Python
对Python中gensim库word2vec的使用详解
May 08 Python
selenium+python实现1688网站验证码图片的截取功能
Aug 14 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
Dec 18 Python
Python微医挂号网医生数据抓取
Jan 24 Python
Python 脚本的三种执行方式小结
Dec 21 Python
Pycharm 2020年最新激活码(亲测有效)
Sep 18 Python
Python3.7实现验证码登录方式代码实例
Feb 14 Python
python numpy库np.percentile用法说明
Jun 08 Python
如何在Python3中使用telnetlib模块连接网络设备
Sep 21 Python
python boto和boto3操作bucket的示例
Oct 30 Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
May 14 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 静态变量与自定义常量的使用方法
2010/01/26 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
PHP数组函数知识汇总
2016/05/12 PHP
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
2020/03/18 PHP
js创建子窗口并且回传值示例代码
2013/07/02 Javascript
JS获取浏览器语言动态加载JS文件示例代码
2014/10/31 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
使用DNode实现php和nodejs之间通信的简单实例
2015/07/06 NodeJs
javascript中Number的方法小结
2016/11/21 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
Vue.js之slot深度复制详解
2017/03/10 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
jQuery插件Validation表单验证详解
2018/05/26 jQuery
js中getter和setter用法实例分析
2018/08/14 Javascript
利用不到200行代码写一款属于你自己的js类库
2019/07/08 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
[05:26]2014DOTA2西雅图国际邀请赛 iG战队巡礼
2014/07/07 DOTA
解决python2.7用pip安装包时出现错误的问题
2017/01/23 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
Steiff台湾官网:德国金耳釦泰迪熊
2019/12/26 全球购物
招股说明书范本
2014/05/06 职场文书
大学生干部培训心得体会
2016/01/06 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
python基础之类属性和实例属性
2021/10/24 Python
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android