回调函数的意义以及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之Import 模块
Oct 13 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
Apr 25 Python
python直接访问私有属性的简单方法
Jul 25 Python
Python内置函数OCT详解
Nov 09 Python
python实现list由于numpy array的转换
Apr 04 Python
python获取文件路径、文件名、后缀名的实例
Apr 23 Python
Python rstrip()方法实例详解
Nov 11 Python
python中使用while循环的实例
Aug 05 Python
wxpython绘制音频效果
Nov 18 Python
通过celery异步处理一个查询任务的完整代码
Nov 19 Python
python产生模拟数据faker库的使用详解
Nov 04 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 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扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
Laravel5.7 Eloquent ORM快速入门详解
2019/04/12 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
深入认识javascript中的eval函数
2009/11/02 Javascript
广泛收集的jQuery拖放插件集合
2012/04/09 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
JS实现回到页面顶部动画效果的简单实例
2016/05/24 Javascript
js实现密码强度检验
2017/01/15 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
2018/03/19 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
2018/05/10 Javascript
vue ssr 指南详读
2018/06/29 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
vue的全局变量和全局拦截请求器的示例代码
2018/09/13 Javascript
vue实现表单录入小案例
2019/09/27 Javascript
R vs. Python 数据分析中谁与争锋?
2017/10/18 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
Python实现一个数组除以一个数的例子
2019/07/20 Python
使用PyTorch实现MNIST手写体识别代码
2020/01/18 Python
实例讲解HTML5的meta标签的一些应用
2015/12/08 HTML / CSS
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
校园自助餐厅的创业计划书
2013/12/26 职场文书
幼儿园六一儿童节文艺汇演主持词
2014/03/21 职场文书
新年寄语大全
2014/04/12 职场文书
政风行风建设整改方案
2014/10/27 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
文明礼仪倡议书
2015/04/28 职场文书
2015人事行政工作总结范文
2015/05/21 职场文书
事业单位工作人员岗前培训心得体会
2016/01/08 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技