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中基本的日期时间处理的学习教程
Oct 16 Python
Python整型运算之布尔型、标准整型、长整型操作示例
Jul 21 Python
解决pycharm安装后代码区不能编辑的问题
Oct 28 Python
python程序变成软件的实操方法
Jun 24 Python
Python 格式化打印json数据方法(展开状态)
Feb 27 Python
如何解决安装python3.6.1失败
Jul 01 Python
keras分类之二分类实例(Cat and dog)
Jul 09 Python
Python3爬虫发送请求的知识点实例
Jul 30 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
Oct 18 Python
python用tkinter实现一个gui的翻译工具
Oct 26 Python
Python爬取某拍短视频
Jun 11 Python
python库sklearn常用操作
Aug 23 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
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
第十二节--类的自动加载
2006/11/16 PHP
在PHP中操作Excel实例代码
2010/04/29 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
Yii框架where查询用法实例分析
2019/10/22 PHP
js函数的延迟加载实现代码
2012/10/11 Javascript
javascript设计模式之解释器模式详解
2014/06/05 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
JS数组(Array)处理函数整理
2014/12/07 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
ReactNative页面跳转Navigator实现的示例代码
2017/08/02 Javascript
jQuery实现的表格前端排序功能示例
2017/09/18 jQuery
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
2014/07/14 Python
利用Python开发实现简单的记事本
2016/11/15 Python
python 接口_从协议到抽象基类详解
2017/08/24 Python
Python常用爬虫代码总结方便查询
2019/02/25 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
2019/12/12 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
css3 transform属性详解
2014/09/30 HTML / CSS
结构和类有什么异同
2012/07/16 面试题
典型事迹材料范文
2014/12/29 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
竞选稿之小学班干部
2019/10/31 职场文书
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle
HTML+JS实现在线朗读器
2022/02/15 Javascript