回调函数的意义以及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实现获取客户机上指定文件并传输到服务器的方法
Mar 16 Python
python实现根据月份和日期得到星座的方法
Mar 27 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
Jan 10 Python
python merge、concat合并数据集的实例讲解
Apr 12 Python
python爬虫之自动登录与验证码识别
Jun 15 Python
对python 通过ssh访问数据库的实例详解
Feb 19 Python
python实现列表的排序方法分享
Jul 01 Python
numpy 声明空数组详解
Dec 05 Python
python实现的分层随机抽样案例
Feb 25 Python
pycharm的python_stubs问题
Apr 08 Python
导致python中import错误的原因是什么
Jul 01 Python
浅谈Python协程asyncio
Jun 20 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编程中数组的指针的使用
2015/11/30 PHP
关于Jqzoom的使用心得 jquery放大镜效果插件
2010/04/12 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
jQuery 常见操作实现方式和常用函数方法总结
2011/05/06 Javascript
javascript中常用编程知识
2013/04/08 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
js判断用户是输入的地址请求的路径(实例讲解)
2017/07/18 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
webpack3之loader全解析
2017/10/26 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
vue的keep-alive中使用EventBus的方法
2019/04/23 Javascript
图解JS原型和原型链实现原理
2020/09/15 Javascript
微信小程序实现锚点跳转
2020/11/23 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
Python count函数使用方法实例解析
2020/03/23 Python
Python logging模块handlers用法详解
2020/08/14 Python
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
2013/01/30 HTML / CSS
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
办公室文员工作自我评价
2013/12/01 职场文书
玲玲的画教学反思
2014/02/04 职场文书
乌鸦喝水教学反思
2014/02/07 职场文书
商务日语专业的自荐信
2014/05/23 职场文书
高中军训的心得体会
2014/09/01 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
2014年招商工作总结
2014/11/22 职场文书
给客户的检讨书
2014/12/21 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书
在Docker容器中部署SQL Server
2022/04/11 Servers