回调函数的意义以及python实现实例


Posted in Python onJune 20, 2017

因工作需要,最近在学习使用python来解析各种文件,包括xmind,xml,excel,csv等等。

在学习python解析XML的时候看到这样一段话:

ElementTree(元素树) ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。 注:因DOM需要将XML数据映射到内存中的树,一是比较慢,二是比较耗内存,而SAX流式读取XML文件,比较快,占用内存少,但需要用户实现回调函数(handler)。

当时就犯了老毛病,被一个不是很知道的名词引起了兴趣--回调函数,后搜索资料学习了一下,感觉需要写个什么来记录一下顺便加深映象,此处引用了不少各位神的经验,篇幅所限就不一一感谢了。

 回调函数(callback),百度百科的解释是这样的:

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

可能是学识确实有限,看起来比较懵逼。然后去找了一些通俗易懂的解释--就好像是家政服务,家政公司提供了一个API:打扫房子,而且还能提供各种打扫,比如扫地,擦家具,清洁马桶等等,我们把打扫房子看做库函数,那么打扫屋子的方式呢是你自己决定的,你要怎么打扫就要预约并执行那种回调函数,你预约并执行服务的行为叫做登记回调函数。下面写个看起来很low的实现以便理解

# coding=utf-8
# 请不要在意为毛要清洁这么多次


def clean1(times):
  """
  就假装是扫地吧,这种函数命名方式,千万别学习
  :param times: 次数
  :return: None
  """
  print '已完成扫地次数:', str(times)


def clean2(times):
  """
  默默的装作洗抽油烟机
  :param times: 次数
  :return: None
  """
  print '已洗抽油烟机次数', str(times)


def call_clean(times, function_name):
  """
  这个很重要,这个就是家政公司的业务系统,要啥业务都得在这说
  这个是实现回调函数的核心
  :param times:次数
  :param function_name:回调函数名
  :return:调用的函数结果
  """
  return function_name(times)

if __name__ == '__main__':
  call_clean(100, clean2) # 给我洗100次抽油烟机,好吧,很变态

最后说一句,看到这应该懂了的一句话:

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现apahce网站日志分析示例
Apr 02 Python
Python实现遍历数据库并获取key的值
May 17 Python
Django中模版的子目录与include标签的使用方法
Jul 16 Python
Python入门学习之字符串与比较运算符
Oct 12 Python
python中子类继承父类的__init__方法实例
Dec 15 Python
Python通过matplotlib画双层饼图及环形图简单示例
Dec 15 Python
pandas带有重复索引操作方法
Jun 08 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
Oct 15 Python
详解django自定义中间件处理
Nov 21 Python
Pytorch释放显存占用方式
Jan 13 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
Sep 24 Python
python 列表推导和生成器表达式的使用
Feb 01 Python
Python处理Excel文件实例代码
Jun 20 #Python
python构建自定义回调函数详解
Jun 20 #Python
Python实现完整的事务操作示例
Jun 20 #Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
Jun 20 #Python
Python实现多并发访问网站功能示例
Jun 19 #Python
Python sqlite3事务处理方法实例分析
Jun 19 #Python
Python之str操作方法(详解)
Jun 19 #Python
You might like
刚才在简化php的库,结果发现很多东西
2006/12/31 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
PHP中的流(streams)浅析
2015/07/02 PHP
网上抓的一个特效
2007/05/11 Javascript
js实现的网页颜色代码表全集
2007/07/17 Javascript
JavaScript 字符串连接性能优化
2008/12/20 Javascript
js 匿名调用实现代码
2009/06/19 Javascript
JavaScript 对象模型 执行模型
2009/12/06 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
对于jQuery性能的一些优化建议
2015/08/13 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
2017/03/08 Javascript
vue-cli+webpack记事本项目创建
2017/04/01 Javascript
javascriptvoid(0)含义以及与"#"的区别讲解
2019/01/19 Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
2020/07/19 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
[01:32:22]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第一场 2月5日
2021/03/11 DOTA
Python用GET方法上传文件
2015/03/10 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
Numpy数组array和矩阵matrix转换方法
2019/08/05 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
简单介绍python封装的基本知识
2019/08/10 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
python 基于opencv操作摄像头
2020/12/24 Python
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
联想C++笔试题
2012/06/13 面试题
合作协议书
2014/04/23 职场文书
公司开业庆典策划方案
2014/06/04 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
MySQL 数据类型详情
2021/11/11 MySQL