回调函数的意义以及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操作SQLite简明教程
Jul 10 Python
在Django的URLconf中使用多个视图前缀的方法
Jul 18 Python
在Pycharm中自动添加时间日期作者等信息的方法
Jan 16 Python
python实现贪吃蛇游戏
Mar 21 Python
解决python super()调用多重继承函数的问题
Jun 26 Python
Python函数装饰器原理与用法详解
Aug 16 Python
Python中字典与恒等运算符的用法分析
Aug 22 Python
Python实现搜索算法的实例代码
Jan 02 Python
Python实现疫情通定时自动填写功能(附代码)
May 27 Python
Python with语句用法原理详解
Jul 03 Python
python collections模块的使用
Oct 16 Python
实例详解Python的进程,线程和协程
Mar 13 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
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
jquery限制输入字数,并提示剩余字数实现代码
2012/12/24 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
React Native验证码倒计时工具类分享
2017/10/24 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
no-vnc和node.js实现web远程桌面的完整步骤
2019/08/11 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
[03:04]2018年度DOTA2玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
python解析xml文件实例分析
2015/05/27 Python
Python 操作MySQL详解及实例
2017/04/30 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
Python中按键来获取指定的值
2019/03/02 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
对python中return与yield的区别详解
2020/03/12 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
全球最大的游戏市场:G2A
2018/07/05 全球购物
大学生求职中的自我评价
2013/10/01 职场文书
国际贸易专业推荐信
2013/11/15 职场文书
生产副总岗位职责
2013/11/28 职场文书
《满井游记》教学反思
2014/02/26 职场文书
对教师的评语
2014/04/28 职场文书
竞争与合作演讲稿
2014/05/12 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
python人工智能human learn绘图可创建机器学习模型
2021/11/23 Python