回调函数的意义以及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 15 Python
Python实现的手机号归属地相关信息查询功能示例
Jun 08 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
Dec 14 Python
Python常见字符串操作函数小结【split()、join()、strip()】
Feb 02 Python
python调用xlsxwriter创建xlsx的方法
May 03 Python
python自动化报告的输出用例详解
May 30 Python
使用 Python 实现微信群友统计器的思路详解
Sep 26 Python
Python中new方法的详解
Jan 15 Python
python json load json 数据后出现乱序的解决方案
Feb 27 Python
详解PyQt5信号与槽的几种高级玩法
Mar 24 Python
python不到50行代码完成了多张excel合并的实现示例
May 28 Python
Pytho爬虫中Requests设置请求头Headers的方法
Sep 22 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
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
Windows下XDebug 手工配置与使用说明
2010/07/11 PHP
Array of country list in PHP with Zend Framework
2011/10/17 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
js原型链原理看图说明
2012/07/07 Javascript
js简单实现HTML标签Select联动带跳转
2013/10/23 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
node.js中的http.get方法使用说明
2014/12/14 Javascript
在JavaScript应用中使用RequireJS来实现延迟加载
2015/07/01 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
vue设置动态请求地址的例子
2019/11/01 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
Python运算符重载用法实例
2015/05/28 Python
python素数筛选法浅析
2018/03/19 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
基于python实现从尾到头打印链表
2019/11/02 Python
Python龙贝格法求积分实例
2020/02/29 Python
Keras实现DenseNet结构操作
2020/07/06 Python
利用html5的websocket实现websocket聊天室
2013/12/12 HTML / CSS
html5 实现客户端验证上传文件的大小(简单实例)
2016/05/15 HTML / CSS
美国网上订购鲜花:FTD
2016/09/23 全球购物
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
巴西本土电商平台:Americanas
2020/06/21 全球购物
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
高三政治教学反思
2014/02/06 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
青年文明号申报材料
2014/12/23 职场文书
亮剑精神观后感
2015/06/05 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书