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求解物理学中的双弹簧质能系统详解
Sep 29 Python
python得到windows自启动列表的方法
Oct 14 Python
在django模板中实现超链接配置
Aug 21 Python
python调用matplotlib模块绘制柱状图
Oct 18 Python
Python线程条件变量Condition原理解析
Jan 20 Python
python读取csv文件指定行的2种方法详解
Feb 13 Python
Python字符串hashlib加密模块使用案例
Mar 10 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
Apr 20 Python
使用python脚本自动生成K8S-YAML的方法示例
Jul 12 Python
详解python 内存优化
Aug 17 Python
Python实现加密的RAR文件解压的方法(密码已知)
Sep 11 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
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
PHP基础学习小结
2011/04/17 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
php使用curl实现简单模拟提交表单功能
2017/05/15 PHP
在laravel中使用Symfony的Crawler组件分析HTML
2017/06/19 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
2016/09/13 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
解决layui使用layui-icon出现默认图标的问题
2019/09/11 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
Python实现的爬取小说爬虫功能示例
2019/03/30 Python
Python接口自动化测试的实现
2020/08/28 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
python安装mysql的依赖包mysql-python操作
2021/01/01 Python
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
大学系主任推荐信范文
2013/12/24 职场文书
大学生职业生涯规划书模板
2014/01/03 职场文书
《老山界》教学反思
2014/04/08 职场文书
党员群众路线对照检查材料
2014/08/31 职场文书
学习党章的体会
2014/11/07 职场文书
辞职信的写法
2015/02/27 职场文书
尼克胡哲观后感
2015/06/08 职场文书
观后感的写法
2015/06/19 职场文书
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫
python获取带有返回值的多线程
2022/05/02 Python
Java 数组的使用
2022/05/11 Java/Android
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL