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 相关文章推荐
python搭建简易服务器分析与实现
Dec 15 Python
Python中获取对象信息的方法
Apr 27 Python
解决python大批量读写.doc文件的问题
May 08 Python
pytorch训练imagenet分类的方法
Jul 27 Python
python脚本开机自启的实现方法
Jun 28 Python
python pandas模块基础学习详解
Jul 03 Python
python设计tcp数据包协议类的例子
Jul 23 Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 Python
使用Python画出小人发射爱心的代码
Nov 23 Python
Python实现非正太分布的异常值检测方式
Dec 09 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 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
php后台多用户权限组思路与实现程序代码分享
2012/02/13 PHP
php 输出缓冲 Output Control用法实例详解
2020/03/03 PHP
javascript 面向对象,实现namespace,class,继承,重载
2009/10/29 Javascript
理解Javascript_09_Function与Object
2010/10/16 Javascript
重载toString实现JS HashMap分析
2011/03/13 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
JS获取时间的方法
2015/01/21 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
Vue列表页渲染优化详解
2017/07/24 Javascript
基于原生js运动方式关键点的总结(推荐)
2017/10/01 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
2019/01/09 jQuery
微信小程序开发的基本流程步骤
2019/01/31 Javascript
vue中监听路由参数的变化及方法
2019/12/06 Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
2020/03/06 Javascript
python 爬虫出现403禁止访问错误详解
2017/03/11 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
2020/09/22 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
轻化专业学生实习自我鉴定
2013/09/20 职场文书
发展部经理职责规定
2014/02/22 职场文书
公司聘任书模板
2014/03/29 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
2016年妇联“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书
Vue接口封装的完整步骤记录
2021/05/14 Vue.js
Nginx+Windows搭建域名访问环境的操作方法
2022/03/17 Servers