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 07 Python
python安装模块如何通过setup.py安装(超简单)
May 05 Python
使用python存储网页上的图片实例
May 22 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
Apr 18 Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
May 29 Python
python装饰器常见使用方法分析
Jun 26 Python
Django Rest framework认证组件详细用法
Jul 25 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
Aug 19 Python
Python大数据之从网页上爬取数据的方法详解
Nov 16 Python
使用pytorch实现论文中的unet网络
Jun 24 Python
利用python制作拼图小游戏的全过程
Dec 04 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
用PHPdig打造属于你自己的Google[图文教程]
2007/02/14 PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
查找php配置文件php.ini所在路径的二种方法
2014/05/26 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
thinkphp框架下实现登录、注册、找回密码功能
2016/04/06 PHP
实例:尽可能写友好的Javascript代码
2006/10/09 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
2013/05/07 Javascript
Javascript中获取对象的原型对象的方法小结
2015/02/25 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
基于bootstrap插件实现autocomplete自动完成表单
2016/05/07 Javascript
使用jQuery中的wrap()函数操作HTML元素的教程
2016/05/24 Javascript
jQuery ztree实现动态树形多选菜单
2016/08/12 Javascript
vue 中动态绑定class 和 style的方法代码详解
2018/06/01 Javascript
JS实现随机抽选获奖者
2019/11/07 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
在Python中使用第三方模块的教程
2015/04/27 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
Python装饰器用法实例分析
2019/01/14 Python
Django如何实现网站注册用户邮箱验证功能
2019/08/14 Python
基于python实现雪花算法过程详解
2019/11/16 Python
Keras搭建自编码器操作
2020/07/03 Python
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
品恩科技软件测试面试题
2014/10/26 面试题
教师评优事迹材料
2014/01/10 职场文书
作弊检讨书1000字
2014/02/01 职场文书
工商干部先进事迹
2014/05/14 职场文书
小学生清明节演讲稿
2014/09/05 职场文书
关于环保的宣传稿
2015/07/23 职场文书
68句权威创业名言
2019/08/26 职场文书
MySQL数据库完全卸载的方法
2022/03/03 MySQL
使用Ajax实现进度条的绘制
2022/04/07 Javascript