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 相关文章推荐
在Django中管理Users和Permissions以及Groups的方法
Jul 23 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
Feb 26 Python
详解将Django部署到Centos7全攻略
Sep 26 Python
Pandas DataFrame 取一行数据会得到Series的方法
Nov 10 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
Oct 11 Python
后端开发使用pycharm的技巧(推荐)
Mar 27 Python
浅谈django 模型类使用save()方法的好处与注意事项
Mar 28 Python
mac安装python3后使用pip和pip3的区别说明
Sep 01 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
Jan 05 Python
python单例模式的应用场景实例讲解
Feb 24 Python
opencv实现图像平移效果
Mar 24 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
php相当简单的分页类
2008/10/02 PHP
如何让CI框架支持service层
2014/10/29 PHP
php面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
JavaScript高级程序设计 DOM学习笔记
2011/09/10 Javascript
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
2013/01/23 Javascript
固定背景实现的背景滚动特效示例分享
2013/05/19 Javascript
JS实现超精简的链接列表在固定区域内滚动效果代码
2015/11/04 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
2017/02/13 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
浅谈javascript的url参数parse和build函数
2017/03/04 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
浅谈jQuery框架Ajax常用选项
2017/07/08 jQuery
ionic3 懒加载
2017/08/16 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
2018/09/05 jQuery
js图数据结构处理 迪杰斯特拉算法代码实例
2019/09/11 Javascript
python机器学习理论与实战(一)K近邻法
2021/01/28 Python
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
Python concurrent.futures模块使用实例
2019/12/24 Python
简单了解Django ORM常用字段类型及参数配置
2020/01/07 Python
利用keras加载训练好的.H5文件,并实现预测图片
2020/01/24 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
企业治理工作自我评价
2013/09/26 职场文书
银行见习期自我鉴定
2014/01/29 职场文书
平安校园建设方案
2014/05/02 职场文书
教师职业道德事迹材料
2014/08/18 职场文书
关于感谢信的范文
2015/01/23 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书