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连接mssql数据库编码问题解决方法
Jan 01 Python
python图像处理之反色实现方法
May 30 Python
Python多进程同步简单实现代码
Apr 27 Python
深入解析Python中的__builtins__内建对象
Jun 21 Python
Python 读写文件的操作代码
Sep 20 Python
python编写猜数字小游戏
Oct 06 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
Feb 26 Python
Python sorted排序方法如何实现
Mar 31 Python
virtualenv介绍及简明教程
Jun 23 Python
django 装饰器 检测登录状态操作
Jul 02 Python
Django-imagekit的使用详解
Jul 06 Python
解决阿里云邮件发送不能使用25端口问题
Aug 07 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
PHP 基本语法格式
2009/12/15 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
js的window.showModalDialog及window.open用法实例分析
2015/01/29 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
使用bootstraptable插件实现表格记录的查询、分页、排序操作
2017/08/06 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
详解Vue.js 可拖放文本框组件的使用
2021/03/03 Vue.js
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
python爬虫入门教程--优雅的HTTP库requests(二)
2017/05/25 Python
Python建立Map写Excel表实例解析
2018/01/17 Python
python 列表删除所有指定元素的方法
2018/04/19 Python
django输出html内容的实例
2018/05/27 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
PyCharm搭建Spark开发环境的实现步骤
2019/09/05 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
将一个文本文件的内容按倒序打印出来
2015/01/05 面试题
日本语毕业生自荐信
2014/02/01 职场文书
入党自荐书范文
2014/03/09 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
医学专业大学生职业生涯规划书
2014/10/25 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python
mybatis 获取更新记录的id
2022/05/20 Java/Android