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 相关文章推荐
使用Turtle画正螺旋线的方法
Sep 22 Python
对python多线程与global变量详解
Nov 09 Python
python正则表达式匹配不包含某几个字符的字符串方法
Jul 23 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
python+selenium 鼠标事件操作方法
Aug 24 Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 Python
python中的subprocess.Popen()使用详解
Dec 25 Python
Python Numpy库常见用法入门教程
Jan 16 Python
Python如何自动获取目标网站最新通知
Jun 18 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
Dec 01 Python
Python第三方库安装缓慢的解决方法
Feb 06 Python
python数字图像处理之图像自动阈值分割示例
Jun 28 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/03/15 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
PHP版 汉字转码的实现详解
2013/06/09 PHP
本地机apache配置基于域名的虚拟主机详解
2013/08/10 PHP
php堆排序(heapsort)练习
2013/11/13 PHP
ThinkPHP分页类使用详解
2014/03/05 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
Yii2中SqlDataProvider用法示例
2016/09/22 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
javascript 系统文件夹文件操作及参数介绍
2013/01/08 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
2014/09/01 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
AngularJs 指令详解及示例代码
2016/09/01 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
2017/05/23 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
2018/07/25 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
python:动态路由的Flask程序代码
2019/11/22 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
HTML5页面无缝闪开的问题及解决方案
2020/06/11 HTML / CSS
美国正宗设计师眼镜在线零售商:EYEZZ
2019/03/23 全球购物
介绍一下游标
2012/01/10 面试题
女子职高个人自荐书
2014/02/01 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
安全目标管理责任书
2014/07/25 职场文书
班主任远程培训研修日志
2015/11/13 职场文书
Django开发RESTful API实现增删改查(入门级)
2021/05/10 Python