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和GO语言实现的消息摘要算法示例
Mar 10 Python
Python中使用第三方库xlrd来写入Excel文件示例
Apr 05 Python
python检测某个变量是否有定义的方法
May 20 Python
在Python中操作时间之strptime()方法的使用
Dec 30 Python
python不换行之end=与逗号的意思及用途
Nov 21 Python
PyQt5每天必学之QSplitter实现窗口分隔
Apr 19 Python
利用Python如何生成便签图片详解
Jul 09 Python
在Python 不同级目录之间模块的调用方法
Jan 19 Python
flask框架路由常用定义方式总结
Jul 23 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
Feb 07 Python
django 获取字段最大值,最新的记录操作
Aug 09 Python
Python约瑟夫生者死者小游戏实例讲解
Jan 04 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
PHP中redis的用法深入解析
2014/02/20 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
PHP 错误处理机制
2015/07/06 PHP
Laravel5中防止XSS跨站攻击的方法
2016/10/10 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
2017/03/23 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
ES6中let 和 const 的新特性
2018/09/03 Javascript
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
2018/10/19 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
Python实现的视频播放器功能完整示例
2018/02/01 Python
在双python下设置python3为默认的方法
2018/10/31 Python
TensorFlow实现简单的CNN的方法
2019/07/18 Python
Python字典推导式将cookie字符串转化为字典解析
2019/08/10 Python
Django media static外部访问Django中的图片设置教程
2020/04/07 Python
英语专业推荐信
2013/11/16 职场文书
中国好声音华少广告词
2014/03/17 职场文书
酒店管理专业自荐信
2014/05/23 职场文书
小学教师培训方案
2014/06/09 职场文书
工作粗心大意检讨书
2014/09/18 职场文书
农村党员对照检查材料
2014/09/24 职场文书
秋收起义观后感
2015/06/11 职场文书
客户答谢会致辞
2015/07/30 职场文书
大学生安全教育主题班会
2015/08/12 职场文书
早安问候语大全
2015/11/10 职场文书