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 相关文章推荐
python自动化脚本安装指定版本python环境详解
Sep 14 Python
python爬虫之BeautifulSoup 使用select方法详解
Oct 23 Python
Python3 Random模块代码详解
Dec 04 Python
Python基于dom操作xml数据的方法示例
May 12 Python
python发送告警邮件脚本
Sep 17 Python
Python实现的微信支付方式总结【三种方式】
Apr 13 Python
Python数据类型之Dict字典实例详解
May 07 Python
python文字转语音实现过程解析
Nov 12 Python
pytorch点乘与叉乘示例讲解
Dec 27 Python
利用python生成照片墙的示例代码
Apr 09 Python
PHP基于phpqrcode类库生成二维码过程解析
May 28 Python
python自动提取文本中的时间(包含中文日期)
Aug 31 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 return语句另类用法不止是在函数中
2014/09/17 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
jquery.tmpl JQuery模板插件
2011/10/10 Javascript
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
2015/07/05 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
2016/05/19 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
Bootstrap页面布局基础知识全面解析
2016/06/13 Javascript
浅谈Javascript中的12种DOM节点类型
2016/08/19 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
利用Javascript实现简单的转盘抽奖
2017/02/13 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
javascript显示动态时间的方法汇总
2018/07/06 Javascript
详解vue-cli3多环境打包配置
2019/03/28 Javascript
jquery简单实现纵向的无缝滚动代码实例
2019/04/01 jQuery
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
layui输入框中只允许输入整数的实现方法
2019/09/18 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
Python列表生成器的循环技巧分享
2015/03/06 Python
在Python中使用gRPC的方法示例
2018/08/08 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
利用pandas将非数值数据转换成数值的方式
2019/12/18 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
python 实现表情识别
2020/11/21 Python
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
银行实习生自我鉴定范文
2013/09/19 职场文书
大专学生推荐信范文
2013/11/19 职场文书
2014年接待工作总结
2014/11/26 职场文书
幼儿园感谢信
2015/01/21 职场文书
办公经费申请报告
2015/05/15 职场文书
python运算符之与用户交互
2022/04/13 Python