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中的多重继承实例讲解
Sep 28 Python
Python中max函数用于二维列表的实例
Apr 03 Python
python 给DataFrame增加index行名和columns列名的实现方法
Jun 08 Python
tensorflow: variable的值与variable.read_value()的值区别详解
Jul 30 Python
python 实现调用子文件下的模块方法
Dec 07 Python
python模拟登陆,用session维持回话的实例
Dec 27 Python
Python 利用pydub库操作音频文件的方法
Jan 09 Python
Python3爬楼梯算法示例
Mar 04 Python
用python3 urllib破解有道翻译反爬虫机制详解
Aug 14 Python
Python tkinter三种布局实例详解
Jan 06 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
Mar 05 Python
Django实现whoosh搜索引擎使用jieba分词
Apr 08 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会员权限控制实现原理分析
2011/05/29 PHP
计算php页面运行时间的函数介绍
2013/07/01 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
javascript 随机展示头像实现代码
2011/12/06 Javascript
前台js调用后台方法示例
2013/12/02 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
jquery实现漂亮的二级下拉菜单代码
2015/08/26 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
vue.js指令v-model实现方法
2016/12/05 Javascript
Webpack打包css后z-index被重新计算的解决方法
2017/06/18 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
jQuery中使用validate插件校验表单功能
2019/05/24 jQuery
ElementUI radio组件选中小改造
2019/08/12 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
vue 获取url参数、get参数返回数组的操作
2020/11/12 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
初学Python实用技巧两则
2014/08/29 Python
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
2020/02/13 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
在校学生职业规划范文
2014/01/08 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
2014年党总支工作总结
2014/12/18 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
社会实践心得体会范文
2016/01/14 职场文书