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中给List添加元素的4种方法分享
Nov 28 Python
python实现根据月份和日期得到星座的方法
Mar 27 Python
恢复百度云盘本地误删的文件脚本(简单方法)
Oct 21 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
May 28 Python
Python 中的range(),以及列表切片方法
Jul 02 Python
Python SQL查询并生成json文件操作示例
Aug 17 Python
pycharm在调试python时执行其他语句的方法
Nov 29 Python
pyspark操作MongoDB的方法步骤
Jan 04 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
Jun 19 Python
Python 元组操作总结
Sep 18 Python
python绘制玫瑰的实现代码
Mar 02 Python
python爬虫中采集中遇到的问题整理
Nov 27 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 empty函数 使用说明
2009/08/10 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
PHP设计模式之适配器模式代码实例
2015/05/11 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
2016/06/13 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
vue router动态路由下让每个子路由都是独立组件的解决方案
2018/04/24 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
Python3使用requests发闪存的方法
2016/05/11 Python
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
Python集成开发工具Pycharm的安装和使用详解
2020/03/18 Python
GitHub上值得推荐的8个python 项目
2020/10/30 Python
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
最新计算机专业自荐信
2013/10/16 职场文书
新学期红领巾广播稿
2014/01/14 职场文书
食品安全检查制度
2014/02/03 职场文书
公司授权委托书范本
2014/09/18 职场文书
企业授权委托书范本
2014/09/22 职场文书
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
西柏坡导游词
2015/02/05 职场文书
财务年终工作总结大全
2019/06/20 职场文书
Python机器学习之基于Pytorch实现猫狗分类
2021/06/08 Python
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL