回调函数的意义以及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中使用logging模块代替print(logging简明指南)
Jul 09 Python
python里使用正则表达式的组嵌套实例详解
Oct 24 Python
Python内存管理方式和垃圾回收算法解析
Nov 11 Python
Python3之文件读写操作的实例讲解
Jan 23 Python
Python 函数基础知识汇总
Mar 09 Python
Python3.5.3下配置opencv3.2.0的操作方法
Apr 02 Python
PyQt5实现下载进度条效果
Apr 19 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
Oct 12 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
Mar 06 Python
Python读取二进制文件代码方法解析
Jun 22 Python
python爬虫scrapy图书分类实例讲解
Nov 23 Python
虚拟环境及venv和virtualenv的区别说明
Feb 05 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
建立动态的WML站点(一)
2006/10/09 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
PHP与Web页面交互操作实例分析
2020/06/02 PHP
JS input 数字验证代码
2009/07/30 Javascript
jquery ajax提交表单数据的两种方式
2009/11/24 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
JavaScript解析json格式数据简单示例
2014/12/09 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
2018/09/04 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
python数据结构之图深度优先和广度优先实例详解
2015/07/08 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
2019/09/10 Python
python机器学习库xgboost的使用
2020/01/20 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
骆驼官方商城:CAMEL
2016/11/22 全球购物
英国女性化妆品收纳和家具网站:Beautify
2019/12/07 全球购物
哈萨克斯坦移动和数字技术在线商店:SatelOnline.kz
2020/09/04 全球购物
幼儿园春游活动方案
2014/01/19 职场文书
年级组长自我鉴定
2014/02/22 职场文书
基督教婚礼主持词
2014/03/14 职场文书
数控专业自荐书范文
2014/03/16 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
学生检讨书范文
2014/10/30 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
2016年全国爱牙日宣传活动总结
2016/04/05 职场文书
Spring Boot两种全局配置和两种注解的操作方法
2021/06/29 Java/Android