Python中的引用和拷贝实例解析


Posted in Python onNovember 14, 2019

这篇文章主要介绍了python中的引用和拷贝实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一.引用

a = ['a', 'b', 'c']
b = a
print(id(a))
print(id(b))
135300560
135300560

可以看到,变量a 和 b 的 id是完全一样的,这就说明a和b是同时指向内存的同一个区域的,即b随a的变化而变化.

Python中的引用和拷贝实例解析

a = ['a', 'b', 'c']
b = a
a[1] = 'd'
print(b)
b[2] = 'e'
print(a)

['a', 'd', 'c']
['a', 'd', 'e']

二.浅拷贝  

浅拷贝只是复制了的父对象,即复制后的变量和复制前的子对象还是指向同一个对象

浅拷贝可以写为 copy.copy(obj) 或者 obj.copy()

import copy
a = ['a', 'b', ['c', 'd', 'e']]
b = copy.copy(a)
a.append('e')
print(b)
a[0] = 'g'
print(b)
a[2].append('f')
print(b)
['a', 'b', ['c', 'd', 'e']]
['a', 'b', ['c', 'd', 'e']]
['a', 'b', ['c', 'd', 'e', 'f']]

画个图来理解就是如下:

Python中的引用和拷贝实例解析

当只有a元素的子元素里的元素有变化时,b才会引起改变

三.深拷贝

深拷贝就比较好理解了,它相当于开辟了一个新空间是新指针指向新的空间,无论原对象怎么变化,新对象都不变

import copy
a = ['a', 'b', ['c', 'd', 'e']]
b = copy.deepcopy(a)
a.append('e')
print(b)
a[0] = 'g'
print(b)
a[2].append('f')
print(b)
['a', 'b', ['c', 'd', 'e']]
['a', 'b', ['c', 'd', 'e']]
['a', 'b', ['c', 'd', 'e']]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
可用于监控 mysql Master Slave 状态的python代码
Feb 10 Python
Python通过正则表达式选取callback的方法
Jul 18 Python
Python 装饰器深入理解
Mar 16 Python
Python实现的简单dns查询功能示例
May 24 Python
python实现redis三种cas事务操作
Dec 19 Python
python将.ppm格式图片转换成.jpg格式文件的方法
Oct 27 Python
python自动化生成IOS的图标
Nov 13 Python
python爬虫实现中英翻译词典
Jun 25 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
Jul 04 Python
Python autoescape标签用法解析
Jan 17 Python
详解Flask前后端分离项目案例
Jul 24 Python
TensorFlow中tf.batch_matmul()的用法
Jun 02 Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 #Python
通过python扫描二维码/条形码并打印数据
Nov 14 #Python
VSCode中自动为Python文件添加头部注释
Nov 14 #Python
python中的函数递归和迭代原理解析
Nov 14 #Python
使用python实现对元素的长截图功能
Nov 14 #Python
Pycharm创建项目时如何自动添加头部信息
Nov 14 #Python
python3实现单目标粒子群算法
Nov 14 #Python
You might like
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
浅析php中如何在有限的内存中读取大文件
2013/07/02 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
2014/11/22 PHP
Zend Framework动作助手FlashMessenger用法详解
2016/03/05 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
2007/06/29 Javascript
通过修改referer下载文件的方法
2008/05/11 Javascript
javascript 函数速查表
2010/02/07 Javascript
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
2010/09/12 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
小程序多图列表实现性能优化的方法步骤
2019/05/28 Javascript
JavaScript面向对象中接口实现方法详解
2019/07/24 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
JavaScript闭包相关知识解析
2019/10/19 Javascript
electron踩坑之dialog中的callback解决
2020/10/06 Javascript
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
使用python实现BLAST
2018/02/12 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
日本小田急百货官网:Odakyu
2018/07/19 全球购物
FLOS美国官网:意大利高级照明工艺的传奇
2018/08/07 全球购物
养殖人员的创业计划书范文
2013/12/26 职场文书
辩护词格式
2015/05/22 职场文书
劳动保障事务所个人工作总结
2015/08/12 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
PHP中strval()函数实例用法
2021/06/07 PHP
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS
table不让td文字溢出操作方法
2022/12/24 HTML / CSS