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 XML RPC服务器端和客户端实例
Nov 22 Python
Python smtplib实现发送邮件功能
May 22 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
Nov 29 Python
Python实现高斯函数的三维显示方法
Dec 29 Python
python使用suds调用webservice接口的方法
Jan 03 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
Jun 27 Python
Django 框架模型操作入门教程
Nov 05 Python
简单了解python字符串前面加r,u的含义
Dec 26 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
Jan 14 Python
Python调用接口合并Excel表代码实例
Mar 31 Python
Django实现文章详情页面跳转代码实例
Sep 16 Python
Python GUI库Tkiner使用方法代码示例
Nov 27 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/10/10 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
用于table内容排序
2006/07/21 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
iPhone手机上搭建nodejs服务器步骤方法
2015/07/06 NodeJs
js判断浏览器类型及设备(移动页面开发)
2015/07/30 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
AngularJS ng-app 指令实例详解
2016/07/30 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
vue配置多代理服务接口地址操作
2020/09/08 Javascript
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
Python全局变量操作详解
2015/04/14 Python
对python sklearn one-hot编码详解
2018/07/10 Python
python实现二维插值的三维显示
2018/12/17 Python
详解pyppeteer(python版puppeteer)基本使用
2019/06/12 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
2019/12/18 Python
python 命名规范知识点汇总
2020/02/14 Python
Keras实现DenseNet结构操作
2020/07/06 Python
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
会计专业推荐信
2013/10/29 职场文书
简单英文演讲稿
2014/01/01 职场文书
理想演讲稿范文
2014/05/21 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
融资合作协议书范本
2014/10/17 职场文书
护理医院见习报告
2014/11/03 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
医者仁心观后感
2015/06/17 职场文书