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实现的redis分布式锁功能示例
May 29 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
Jun 11 Python
python中使用 xlwt 操作excel的常见方法与问题
Jan 13 Python
python opencv调用笔记本摄像头
Aug 28 Python
python实现单链表的方法示例
Sep 03 Python
在vscode中配置python环境过程解析
Sep 28 Python
matplotlib绘制多个子图(subplot)的方法
Dec 03 Python
django自定义模板标签过程解析
Dec 14 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
Feb 27 Python
Python实现屏幕录制功能的代码
Mar 02 Python
Python基于Webhook实现github自动化部署
Nov 28 Python
python获取带有返回值的多线程
May 02 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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
通过对php一些服务器端特性的配置加强php的安全
2006/10/09 PHP
PHP入门
2006/10/09 PHP
PHP入门速成教程
2007/03/19 PHP
用php解析html的实现代码
2011/08/08 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
2020/10/01 PHP
thinkphp微信开发(消息加密解密)
2015/12/02 PHP
PHP实现多图上传(结合uploadify插件)思路分析
2016/11/30 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
jQuery技巧总结
2011/01/01 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
jquery实现的横向二级导航效果代码
2015/08/26 Javascript
jQuery动态添加
2016/04/07 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
2018/04/17 Javascript
angularjs http与后台交互的实现示例
2018/12/21 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
微信小程序实现文件、图片上传功能
2020/08/18 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
python微信公众号之关键词自动回复
2018/06/15 Python
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
Python学习笔记之图片人脸检测识别实例教程
2019/03/06 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
什么是跨站脚本攻击
2014/12/11 面试题
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
会计电算化个人自我评价
2013/11/17 职场文书
服务理念口号
2014/06/11 职场文书
家庭贫困证明
2015/06/16 职场文书