回调函数的意义以及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 相关文章推荐
TensorFlow高效读取数据的方法示例
Feb 06 Python
python 实现登录网页的操作方法
May 11 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
May 24 Python
Python数据分析matplotlib设置多个子图的间距方法
Aug 03 Python
Python多线程应用于自动化测试操作示例
Dec 06 Python
python 批量修改 labelImg 生成的xml文件的方法
Sep 09 Python
python实现拼图小游戏
Feb 22 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
May 09 Python
基于keras中的回调函数用法说明
Jun 17 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
Feb 07 Python
Python djanjo之csrf防跨站攻击实验过程
May 14 Python
在Python中如何使用yield
Jun 07 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 SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
PHP exif扩展方法开启详解
2014/07/28 PHP
php购物车实现方法
2015/01/03 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
PHP判断当前使用的是什么浏览器(推荐)
2019/10/27 PHP
onpropertypchange
2006/07/01 Javascript
JavaScript For Beginners(转载)
2007/01/05 Javascript
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
js操作CheckBoxList实现全选/反选(在客服端完成)
2013/02/02 Javascript
js创建子窗口并且回传值示例代码
2013/07/02 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
浅谈javascript中return语句
2015/07/15 Javascript
vue多级多选菜单组件开发
2020/09/08 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
2020/08/19 Javascript
复习Python中的字符串知识点
2015/04/14 Python
Python元组及文件核心对象类型详解
2018/02/11 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
业务主管岗位职责范本
2013/12/25 职场文书
策划总监岗位职责
2014/02/16 职场文书
客运企业隐患排查工作方案
2014/06/06 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
幼儿教师个人总结
2015/02/05 职场文书
公务员年终个人总结
2015/02/12 职场文书
公司处罚决定书
2015/06/24 职场文书
2015大学生入党个人自传
2015/06/26 职场文书