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中文编码那些事
Jun 25 Python
Python中的闭包实例详解
Aug 29 Python
详解使用Python处理文件目录的相关方法
Oct 16 Python
详解Python函数可变参数定义及其参数传递方式
Aug 02 Python
python 文件转成16进制数组的实例
Jul 09 Python
python+PyQT实现系统桌面时钟
Jun 16 Python
python 检查是否为中文字符串的方法
Dec 28 Python
利用python在excel里面直接使用sql函数的方法
Feb 08 Python
python爬虫之爬取百度音乐的实现方法
Aug 24 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
Apr 11 Python
Python基于Serializer实现字段验证及序列化
Nov 04 Python
python自然语言处理之字典树知识总结
Apr 25 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设置静态内容缓存时间的方法
2014/12/01 PHP
PHP开发注意事项总结
2015/02/04 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
php利用嵌套数组拼接与解析json的方法
2017/02/07 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
JS 自定义带默认值的函数
2011/07/21 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
js的回调函数详解
2015/01/05 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
使用jQuery管理选择结果
2015/01/20 Javascript
jquery实现超简洁的TAB选项卡效果代码
2015/08/28 Javascript
jQuery UI库中dialog对话框功能使用全解析
2016/04/23 Javascript
微信小程序使用第三方库Underscore.js步骤详解
2016/09/27 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
基于Vue实现微信小程序的图文编辑器
2018/07/25 Javascript
详解vue-cli3多环境打包配置
2019/03/28 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
javascript canvas封装动态时钟
2020/09/30 Javascript
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
Python Numpy库安装与基本操作示例
2019/01/08 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
Keras使用ImageNet上预训练的模型方式
2020/05/23 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
HTML5开发动态音频图的实现
2020/07/02 HTML / CSS
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
解除处分决定书
2015/06/25 职场文书
创业计划书之花店
2019/09/20 职场文书
JS监听Esc 键触发事键
2021/04/14 Javascript