回调函数的意义以及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的Django框架中包装视图函数
Jul 20 Python
python常见的格式化输出小结
Dec 15 Python
Python内置函数reversed()用法分析
Mar 20 Python
基于python3实现socket文件传输和校验
Jul 28 Python
Django 查询数据库并返回页面的例子
Aug 12 Python
关于pycharm中pip版本10.0无法使用的解决办法
Oct 10 Python
Python数据可视化:箱线图多种库画法
Nov 06 Python
python 初始化一个定长的数组实例
Dec 02 Python
Python拼接字符串的7种方式详解
Mar 19 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
Feb 25 Python
基于python实现银行管理系统
Apr 20 Python
Python 如何安装Selenium
May 06 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批量去除BOM头代码分享
2015/06/26 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
ppk谈JavaScript style属性
2008/10/10 Javascript
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
Jquery插件之多图片异步上传
2010/10/20 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
悬浮数字的实现案例
2014/02/19 Javascript
javascript 动态创建表格
2015/01/08 Javascript
jQuery对象与DOM对象之间的相互转换
2015/03/03 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
jQuery pjax 应用简单示例
2018/09/20 jQuery
微信小程序 搜索框组件代码实例
2019/09/06 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
vue 插槽简介及使用示例
2020/11/19 Vue.js
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
[04:14]从西雅图到上海——玩家自制DOTA2主题歌曲应援TI9
2019/07/11 DOTA
详解Python核心对象类型字符串
2018/02/11 Python
Python中多个数组行合并及列合并的方法总结
2018/04/12 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
python 递归调用返回None的问题及解决方法
2020/03/16 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
纯HTML+CSS3制作导航菜单(附源码)
2013/04/24 HTML / CSS
银行见习期自我鉴定
2014/01/29 职场文书
交通事故私了协议书
2014/04/16 职场文书
读书活动总结范文
2014/04/26 职场文书
滞留工资返还协议书
2014/10/19 职场文书
2015年数学教研组工作总结
2015/05/23 职场文书
【js设计模式】SOLID五大设计原则
2022/03/24 Javascript
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android