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中的zip()与*zip()函数详解
Feb 24 Python
用python写扫雷游戏实例代码分享
May 27 Python
Python3中关于cookie的创建与保存
Oct 21 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
Oct 31 Python
python文件拆分与重组实例
Dec 10 Python
Python实现DDos攻击实例详解
Feb 02 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
Feb 20 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
python爬虫开发之urllib模块详细使用方法与实例全解
Mar 09 Python
如何教少儿学习Python编程
Jul 10 Python
Python绘制K线图之可视化神器pyecharts的使用
Mar 02 Python
python中urllib包的网络请求教程
Apr 19 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 无限级分类,超级简单的无限级分类,支持输出树状图
2014/06/29 PHP
Laravel5权限管理方法详解
2016/07/26 PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
2019/06/12 PHP
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
js实现微博发布小功能
2017/01/12 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
js学习总结_选项卡封装(实例讲解)
2017/07/13 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
2017/09/20 jQuery
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
学习 Vue.js 遇到的那些坑
2021/02/02 Vue.js
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
python调用java模块SmartXLS和jpype修改excel文件的方法
2015/04/28 Python
Python多重继承的方法解析执行顺序实例分析
2018/05/26 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
2019/05/13 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
HEMA法国:荷兰原创设计
2019/02/21 全球购物
思想品德课教学反思
2014/02/10 职场文书
师范生自荐信模板
2014/05/28 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
党的群众路线教育实践活动个人整改落实情况汇报
2014/10/28 职场文书
质量承诺书格式范文
2015/04/28 职场文书
给下属加薪申请报告
2015/05/15 职场文书
七年级上册生物的课件
2019/08/07 职场文书
redis实现的四种常见限流策略
2021/06/18 Redis
Nginx报404错误的详细解决方法
2022/07/23 Servers