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通过加号运算符操作列表的方法
Jul 28 Python
Python 实现简单的电话本功能
Aug 09 Python
python中的文件打开与关闭操作命令介绍
Apr 26 Python
深入解析Python小白学习【操作列表】
Mar 23 Python
Python安装与基本数据类型教程详解
May 29 Python
python实现将一维列表转换为多维列表(numpy+reshape)
Nov 29 Python
Pytorch中膨胀卷积的用法详解
Jan 07 Python
pytorch方法测试详解——归一化(BatchNorm2d)
Jan 15 Python
基于python 取余问题(%)详解
Jun 03 Python
python解释器安装教程的方法步骤
Jul 02 Python
python解决12306登录验证码的实现
Apr 18 Python
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
Apr 24 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中去除所有js,html,css代码
2010/10/12 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
2014/07/18 PHP
php使用curl打开https网站的方法
2015/06/17 PHP
PHP aes (ecb)解密后乱码问题
2015/06/22 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
多广告投放代码 推荐
2006/11/13 Javascript
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
jQuery最佳实践完整篇
2011/08/20 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
jquery插件推荐 jquery.cookie
2014/11/09 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
通过实例理解javascript中没有函数重载的概念
2015/06/03 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
vue-router之实现导航切换过渡动画效果
2019/10/31 Javascript
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
python str与repr的区别
2013/03/23 Python
Python、Javascript中的闭包比较
2015/02/04 Python
Python字符串逐字符或逐词反转方法
2015/05/21 Python
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
详解python多线程、锁、event事件机制的简单使用
2018/04/27 Python
keras slice layer 层实现方式
2020/06/11 Python
python设置表格边框的具体方法
2020/07/17 Python
彪马英国官网:PUMA英国
2019/02/11 全球购物
将相和教学反思
2014/02/04 职场文书
2014年助理工程师工作总结
2014/11/14 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书
创业项目大全(适合在家创业的项目)
2019/08/15 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA