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使用reportlab画图示例(含中文汉字)
Dec 03 Python
python字符串替换示例
Apr 24 Python
使用Python判断质数(素数)的简单方法讲解
May 05 Python
Python实现Smtplib发送带有各种附件的邮件实例
Jun 05 Python
python实现拓扑排序的基本教程
Mar 11 Python
基于python实现简单日历
Jul 28 Python
python射线法判断检测点是否位于区域外接矩形内
Jun 28 Python
Python3实现汉语转换为汉语拼音
Jul 08 Python
PyCharm 在Windows的有用快捷键详解
Apr 07 Python
用pandas划分数据集实现训练集和测试集
Jul 20 Python
如何利用Python写个坦克大战
Nov 18 Python
用sleep间隔进行python反爬虫的实例讲解
Nov 30 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的FTP学习(四)
2006/10/09 PHP
PHP 读取文件的正确方法
2009/04/29 PHP
php切割页面div内容的实现代码分享
2012/07/31 PHP
PHP explode()函数用法、切分字符串
2012/10/03 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
Prototype Object对象 学习
2009/07/12 Javascript
Javascript基础教程之数组 array
2015/01/18 Javascript
javascript结合Canvas 实现简易的圆形时钟
2015/03/11 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
8 行 Node.js 代码实现代理服务器
2016/12/05 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
Three.js入门之hello world以及如何绘制线
2017/09/25 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
2019/11/01 jQuery
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
CentOS中升级Python版本的方法详解
2017/07/10 Python
Pycharm远程调试openstack的方法
2017/11/21 Python
谈谈python中GUI的选择
2018/03/01 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
PyQt5固定窗口大小的方法
2019/06/18 Python
python使用sklearn实现决策树的方法示例
2019/09/12 Python
python实现图书馆抢座(自动预约)功能的示例代码
2020/09/29 Python
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
英国可持续奢侈品包包品牌:Elvis & Kresse
2018/08/05 全球购物
中东最大的在线宠物店:Dubai Pet Food
2020/06/11 全球购物
专业销售业务员求职信
2013/11/18 职场文书
幼儿教师师德演讲稿
2014/05/06 职场文书
读书之星事迹材料
2014/05/12 职场文书
小学学习雷锋活动总结
2014/07/03 职场文书
退休党员个人对照检查材料思想汇报
2014/09/29 职场文书
2015年组织委员工作总结
2015/04/23 职场文书
详解MySQL集群搭建
2021/05/26 MySQL
深入理解 Golang 的字符串
2022/05/04 Golang
Golang gRPC HTTP协议转换示例
2022/06/16 Golang