Python直接赋值、浅拷贝与深度拷贝实例分析


Posted in Python onJune 18, 2019

本文实例讲述了Python直接赋值、浅拷贝与深度拷贝。分享给大家供大家参考,具体如下:

  • 直接赋值:其实就是对象的引用(别名)。
  • 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
  • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

字典浅拷贝实例

实例

>>>a = {1: [1,2,3]}
>>> b = a.copy()
>>> a, b
({1: [1, 2, 3]}, {1: [1, 2, 3]})
>>> a[1].append(4)
>>> a, b
({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})

深度拷贝需要引入 copy 模块:

实例

>>>import copy
>>> c = copy.deepcopy(a)
>>> a, c
({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})
>>> a[1].append(5)
>>> a, c
({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})

解析

1、b = a: 赋值引用,a 和 b 都指向同一个对象。

Python直接赋值、浅拷贝与深度拷贝实例分析

2、b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。

Python直接赋值、浅拷贝与深度拷贝实例分析

b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

Python直接赋值、浅拷贝与深度拷贝实例分析

更多实例

以下实例是使用 copy 模块的 copy.copy( 浅拷贝 )和(copy.deepcopy ):

实例

#!/usr/bin/python
# -*-coding:utf-8 -*-
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 相关文章推荐
在Docker上开始部署Python应用的教程
Apr 17 Python
Windows下Python的Django框架环境部署及应用编写入门
Mar 10 Python
python并发编程之多进程、多线程、异步和协程详解
Oct 28 Python
Python+request+unittest实现接口测试框架集成实例
Mar 16 Python
python psutil库安装教程
Mar 19 Python
Python自定义线程类简单示例
Mar 23 Python
实例详解Python模块decimal
Jun 26 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
Jul 15 Python
pytorch中的自定义反向传播,求导实例
Jan 06 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
Aug 22 Python
python自动提取文本中的时间(包含中文日期)
Aug 31 Python
详解anaconda离线安装pytorchGPU版
Sep 08 Python
python实现五子棋游戏
Jun 18 #Python
解决python中使用PYQT时中文乱码问题
Jun 17 #Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
Jun 17 #Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
Jun 17 #Python
python3.6根据m3u8下载mp4视频
Jun 17 #Python
python如何实现视频转代码视频
Jun 17 #Python
python批量爬取下载抖音视频
Jun 17 #Python
You might like
Smarty Foreach 使用说明
2010/03/23 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
2018/05/31 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
jquery1.10给新增元素绑定事件的方法
2014/03/06 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
Vue单文件组件的如何使用方式介绍
2017/07/28 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
详解HTML5 使用video标签实现选择摄像头功能
2017/10/25 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
jQuery Ajax async=>false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
JavaScript如何判断input数据类型
2020/02/06 Javascript
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
详解Django中六个常用的自定义装饰器
2018/07/04 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
2019/04/04 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
2020/07/13 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
python 爬取百度文库并下载(免费文章限定)
2020/12/04 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
俄罗斯建筑和装饰材料在线商店:Stroilandia
2020/07/25 全球购物
可靠的数据流传输TCP
2016/03/15 面试题
信息专业本科生个人的自我评价
2013/10/28 职场文书
运动会解说词200字
2014/02/06 职场文书
党校毕业心得体会
2014/09/13 职场文书
工作证明英文模板
2014/10/21 职场文书
三方协议书
2015/01/27 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL