Python直接赋值及深浅拷贝原理详解


Posted in Python onSeptember 05, 2020

定义

  • 直接赋值:就是对象的引用(别名)
  • 浅拷贝(copy):拷贝父对象,不拷贝对象内部的子对象
  • 深拷贝(deepcopy):copy模块的deepcopy方法,完全拷贝父对象及其子对象

解释

b = a: 赋值引用,a和b都指向同一个对象

Python直接赋值及深浅拷贝原理详解

b = a.copy(): 浅拷贝,a和b都是一个独立的对象,但它们的子对象是指向统一对象(是引用)

Python直接赋值及深浅拷贝原理详解

b = copy.deepcopy(a): 深拷贝,a和b完全拷贝了父对象及其子对象,两者是完全独立的

Python直接赋值及深浅拷贝原理详解

示例

以下是直接赋值、浅拷贝和深拷贝之对比

import copy

a = [1, 2, 3, 4, ['a', 'b']]  #原始对象

b = a        #直接赋值,原始对象的引用
c = copy.copy(a)     #浅拷贝
d = copy.deepcopy(a)    #深拷贝

a.append(5)      #修改对象a
a[4].append('c')     #修改对象a中的['a', 'b']列表对象

print( 'a = ', a )
print( 'b = ', b )
print( 'c = ', c )
print( 'd = ', d )

以上实例执行输出结果为:

a = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c = [1, 2, 3, 4, ['a', 'b', 'c']]
d = [1, 2, 3, 4, ['a', 'b']]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中MYSQLdb出现乱码的解决方法
Oct 11 Python
python技能之数据导出excel的实例代码
Aug 11 Python
python cx_Oracle的基础使用方法(连接和增删改查)
Nov 19 Python
Python读写zip压缩文件的方法
Aug 29 Python
解决Python3.5+OpenCV3.2读取图像的问题
Dec 05 Python
Python爬虫文件下载图文教程
Dec 23 Python
Python设计模式之备忘录模式原理与用法详解
Jan 15 Python
python读取tif图片时保留其16bit的编码格式实例
Jan 13 Python
vue常用指令代码实例总结
Mar 16 Python
Keras自定义实现带masking的meanpooling层方式
Jun 16 Python
Python中lru_cache的使用和实现详解
Jan 25 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 Python
Python数据库封装实现代码示例解析
Sep 05 #Python
Python‘==‘ 及 ‘is‘相关原理解析
Sep 05 #Python
如何使用 Python 读取文件和照片的创建日期
Sep 05 #Python
Python filter()及reduce()函数使用方法解析
Sep 05 #Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
Sep 05 #Python
Python中猜拳游戏与猜筛子游戏的实现方法
Sep 04 #Python
Python实现快速大文件比较代码解析
Sep 04 #Python
You might like
数字转英文
2006/12/06 PHP
php为什么选mysql作为数据库? Mysql 创建用户方法
2007/07/02 PHP
PHP常用的小程序代码段
2015/11/14 PHP
实例详解PHP中html word 互转的方法
2016/01/28 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
防止重复发送 Ajax 请求
2017/02/15 Javascript
NodeJS链接MySql数据库的操作方法
2017/06/27 NodeJs
jQuery实现键盘回车搜索功能
2017/07/25 jQuery
JS中跳出循环的示例代码
2017/09/14 Javascript
如何用webpack4带你实现一个vue的打包的项目
2018/06/20 Javascript
node.js的Express服务器基本使用教程
2019/01/09 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
vue实现路由监听和参数监听
2019/10/29 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
解决Vue项目中tff报错的问题
2020/10/21 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
[01:13:01]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第三场
2018/04/05 DOTA
Python实现端口复用实例代码
2014/07/03 Python
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
python基础教程之匿名函数lambda
2017/01/17 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
初中生操行评语大全
2014/04/24 职场文书
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
经济贸易系毕业生求职信
2014/05/31 职场文书
董事长助理工作职责范本
2014/07/01 职场文书
岗位竞聘报告范文
2014/11/06 职场文书
2014年控辍保学工作总结
2014/12/08 职场文书
初三毕业感言
2015/07/31 职场文书
Java常用函数式接口总结
2021/06/29 Java/Android