回调函数的意义以及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 Sleep休眠函数使用简单实例
Feb 02 Python
浅谈Python程序与C++程序的联合使用
Apr 07 Python
Python设计模式之抽象工厂模式
Aug 25 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
Mar 14 Python
python多线程下信号处理程序示例
May 31 Python
flask框架单元测试原理与用法实例分析
Jul 23 Python
在python中实现求输出1-3+5-7+9-......101的和
Apr 02 Python
python:解析requests返回的response(json格式)说明
Apr 30 Python
解决django框架model中外键不落实到数据库问题
May 20 Python
Django实现前台上传并显示图片功能
May 29 Python
python实现xml转json文件的示例代码
Dec 30 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
Jan 09 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
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
PHP PDOStatement::fetchAll讲解
2019/01/31 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
半角全角相互转换的js函数
2009/10/16 Javascript
javaScript call 函数的用法说明
2010/04/09 Javascript
顶部缓冲下拉菜单导航特效的JS代码
2013/08/27 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
基于vue实现圆形菜单栏组件
2019/07/05 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
JS实现放大镜效果
2020/09/21 Javascript
在Python的Flask框架中实现单元测试的教程
2015/04/20 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
python tkinter组件摆放方式详解
2019/09/16 Python
使用TensorFlow-Slim进行图像分类的实现
2019/12/31 Python
python爬虫基础知识点整理
2020/06/02 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
澳大利亚运动鞋零售商:The Athlete’s Foot
2018/11/04 全球购物
客户代表自我评价范例
2013/09/24 职场文书
《去年的树》教学反思
2014/04/11 职场文书
本科毕业生自荐信
2014/06/02 职场文书
财务助理岗位职责范本
2014/10/09 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
人事局接收函
2015/01/31 职场文书
纪检干部学习心得体会
2016/01/23 职场文书
html form表单基础入门案例讲解
2021/07/21 HTML / CSS