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实现二叉树的遍历
Dec 11 Python
python 实现对文件夹内的文件排序编号
Apr 12 Python
Python2和Python3中urllib库中urlencode的使用注意事项
Nov 26 Python
对python 生成拼接xml报文的示例详解
Dec 28 Python
学习python分支结构
May 17 Python
简单了解python高阶函数map/reduce
Jun 28 Python
解决Python中pandas读取*.csv文件出现编码问题
Jul 12 Python
Django多数据库的实现过程详解
Aug 01 Python
python进程间通信Queue工作过程详解
Nov 01 Python
django 装饰器 检测登录状态操作
Jul 02 Python
Python:__eq__和__str__函数的使用示例
Sep 26 Python
Python Flask实现进度条
May 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
php常见的魔术方法详解
2014/12/25 PHP
php版微信自动获取收货地址api用法示例
2016/09/22 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
php文件包含的几种方式总结
2019/09/19 PHP
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
javascript 用记忆函数快速计算递归函数
2010/03/15 Javascript
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
vue.js指令v-for使用及索引获取
2016/11/03 Javascript
jQuery密码强度验证控件使用详解
2017/01/05 Javascript
jQuery插件MovingBoxes实现左右滑动中间放大图片效果
2017/02/28 Javascript
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
javaScript日期工具类DateUtils详解
2017/12/08 Javascript
nodejs+mongodb+vue前后台配置ueditor的示例代码
2018/01/02 NodeJs
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
2018/03/10 Javascript
Python tkinter模块中类继承的三种方式分析
2017/08/08 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
使用Python快乐学数学Github万星神器Manim简介
2019/08/07 Python
python面向对象 反射原理解析
2019/08/12 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
使用python实现哈希表、字典、集合操作
2019/12/22 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
会计自我鉴定
2014/02/04 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js
CSS SandBox应用场景及常见问题
2022/06/25 HTML / CSS