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入门者的一些编程建议
Jun 15 Python
举例讲解Python编程中对线程锁的使用
Jul 12 Python
python模块导入的细节详解
Dec 10 Python
python 实现在tkinter中动态显示label图片的方法
Jun 13 Python
python中字符串数组逆序排列方法总结
Jun 23 Python
Ubuntu+python将nii图像保存成png格式
Jul 18 Python
基于python的selenium两种文件上传操作实现详解
Sep 19 Python
解决django FileFIELD的编码问题
Mar 30 Python
Python实现多线程下载脚本的示例代码
Apr 03 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
pyecharts在数据可视化中的应用详解
Jun 08 Python
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
Jun 05 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
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
PHP获取网址的顶级域名函数代码
2012/09/24 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
JavaScript 题型问答有答案参考
2010/02/17 Javascript
IE与FireFox中的childNodes区别
2011/10/20 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
2016/05/21 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
2018/08/14 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
python中requests模块的使用方法
2015/04/08 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
python Django编写接口并用Jmeter测试的方法
2019/07/31 Python
python绘制封闭多边形教程
2020/02/18 Python
在python image 中实现安装中文字体
2020/05/16 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
Html5元素及基本语法详解
2016/08/02 HTML / CSS
三星英国官网:Samsung英国
2018/09/25 全球购物
UNIX文件名称有什么规定
2013/03/25 面试题
甜品店的创业计划书范文
2014/01/02 职场文书
考核评语大全
2014/04/29 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
详解Laravel制作API接口
2021/05/31 PHP
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript