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实现的二叉树算法和kmp算法实例
Apr 25 Python
python创建线程示例
May 06 Python
python基础教程之序列详解
Aug 29 Python
python中实现定制类的特殊方法总结
Sep 28 Python
通过Python爬虫代理IP快速增加博客阅读量
Dec 14 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
学习python可以干什么
Feb 26 Python
Python爬取视频(其实是一篇福利)过程解析
Aug 01 Python
python进程间通信Queue工作过程详解
Nov 01 Python
python 基于dlib库的人脸检测的实现
Nov 08 Python
django执行原始查询sql,并返回Dict字典例子
Apr 01 Python
pytorch中的 .view()函数的用法介绍
Mar 17 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执行速度全攻略(下)
2006/10/09 PHP
php中常用编辑器推荐
2007/01/02 PHP
PHP数组及条件,循环语句学习
2012/11/11 PHP
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
PHP动态规划解决0-1背包问题实例分析
2015/03/23 PHP
php 基础函数
2017/02/10 PHP
PHP实现分布式memcache设置web集群session同步的方法
2018/04/10 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
基于jquery插件制作左右按钮与标题文字图片切换效果
2013/11/07 Javascript
js实现回放拖拽轨迹从过程上进行分析
2014/06/26 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
Angular.js去除页面中显示的空行方法示例
2017/03/30 Javascript
老生常谈jacascript DOM节点获取
2017/04/17 Javascript
微信小程序商品详情页底部弹出框
2019/11/22 Javascript
python根据经纬度计算距离示例
2014/02/16 Python
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
Python实现给qq邮箱发送邮件的方法
2015/05/28 Python
Python爬虫中urllib库的进阶学习
2018/01/05 Python
如何使用pandas读取txt文件中指定的列(有无标题)
2020/03/05 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
python 高阶函数简单介绍
2021/02/19 Python
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
教育科研先进个人材料
2014/01/26 职场文书
工作目标责任书
2014/07/23 职场文书
红色经典观后感
2015/06/18 职场文书
护士旷工检讨书
2015/08/15 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
在 HTML 页面中使用 React的场景分析
2022/01/18 Javascript