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 连连看连接算法
Nov 22 Python
python调用cmd复制文件代码分享
Dec 27 Python
Python写的Socks5协议代理服务器
Aug 06 Python
利用Python实现在同一网络中的本地文件共享方法
Jun 04 Python
python中logging模块的一些简单用法的使用
Feb 22 Python
Django集成搜索引擎Elasticserach的方法示例
Jun 04 Python
Python定时发送天气预报邮件代码实例
Sep 09 Python
使用Python制作一个打字训练小工具
Oct 01 Python
使用Python的Turtle绘制哆啦A梦实例
Nov 21 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
Mar 19 Python
python求numpy中array按列非零元素的平均值案例
Jun 08 Python
如何基于Python pygame实现动画跑马灯
Nov 18 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的中问验证码
2006/11/25 PHP
php项目打包方法
2008/02/18 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
基础的WordPress插件制作教程
2015/11/24 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
js form 验证函数 当前比较流行的错误提示
2009/06/23 Javascript
jQuery参数列表集合
2011/04/06 Javascript
JavaScript中:表达式和语句的区别[译]
2012/09/17 Javascript
jQuery toggleClass应用实例(附效果图)
2014/04/06 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
vue后台管理之动态加载路由的方法
2018/08/13 Javascript
详解vue挂载到dom上会发生什么
2019/01/20 Javascript
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
Python的设计模式编程入门指南
2015/04/02 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
Python 如何查找特定类型文件
2020/08/17 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
this关键字的作用
2016/01/30 面试题
企业形象策划方案
2014/05/29 职场文书
公司财务会计主管应聘求职信
2014/09/26 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
教师节表彰会主持词
2015/07/06 职场文书
(开源)微信小程序+mqtt,esp8266温湿度读取
2021/04/02 Javascript