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 相关文章推荐
pyramid配置session的方法教程
Nov 27 Python
Python中利用sorted()函数排序的简单教程
Apr 27 Python
python实现复制整个目录的方法
May 12 Python
python随机数分布random测试
Aug 27 Python
Python编程深度学习绘图库之matplotlib
Dec 28 Python
使用python的pexpect模块,实现远程免密登录的示例
Feb 14 Python
python实现全盘扫描搜索功能的方法
Feb 14 Python
python命令行工具Click快速掌握
Jul 04 Python
Python求两个字符串最长公共子序列代码实例
Mar 05 Python
keras CNN卷积核可视化,热度图教程
Jun 22 Python
Python数据分析之pandas读取数据
Jun 02 Python
Python读写yaml文件
Mar 20 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
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
ThinkPHP5 的简单搭建和使用详解
2018/11/15 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
Javascript 构造函数详解
2014/10/22 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
Node.js实现JS文件合并小工具
2016/02/02 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
JS高级运动实例分析
2016/12/20 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
jQuery插件开发发送短信倒计时功能代码
2017/05/09 jQuery
利用node.js实现自动生成前端项目组件的方法详解
2017/07/12 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
详解使用 Node.js 开发简单的脚手架工具
2018/06/08 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
2018/07/30 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
基于python socketserver框架全面解析
2017/09/21 Python
python实现比较文件内容异同
2018/06/22 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
即将毕业大学生自荐信
2014/01/24 职场文书
学生会主席演讲稿
2014/04/25 职场文书
爱之链教学反思
2014/04/30 职场文书
党的生日活动方案
2014/08/15 职场文书
2014年四风问题自我剖析材料
2014/09/15 职场文书
廉洁自律个人总结
2015/02/14 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
暑假生活随笔
2015/08/15 职场文书
中职班主任培训心得体会
2016/01/07 职场文书
2016思想纪律作风整顿心得体会
2016/01/23 职场文书
Python requests用法和django后台处理详解
2022/03/19 Python