回调函数的意义以及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 13 Python
Python实现将n个点均匀地分布在球面上的方法
Mar 12 Python
python脚本内运行linux命令的方法
Jul 02 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
Nov 20 Python
Linux下多个Python版本安装教程
Aug 15 Python
python+opencv 读取文件夹下的所有图像并批量保存ROI的方法
Jan 10 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
Aug 05 Python
Python Django Cookie 简单用法解析
Aug 13 Python
PyQt+socket实现远程操作服务器的方法示例
Aug 22 Python
python文件读写代码实例
Oct 21 Python
pytorch 求网络模型参数实例
Dec 30 Python
python 基于opencv去除图片阴影
Jan 26 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 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
2019/10/15 PHP
php中yii框架实例用法
2020/12/22 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
2013/01/17 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
2015/03/04 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
2018/03/01 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
一文了解vue-router之hash模式和history模式
2019/05/31 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Python实现大文件排序的方法
2015/07/10 Python
利用Python读取文件的四种不同方法比对
2017/05/18 Python
Python实现的快速排序算法详解
2017/08/01 Python
Python+OpenCV人脸检测原理及示例详解
2020/10/19 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
详解将Django部署到Centos7全攻略
2018/09/26 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
python列表生成器迭代器实例解析
2019/12/19 Python
Pytorch Tensor基本数学运算详解
2019/12/30 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
windows10在visual studio2019下配置使用openCV4.3.0
2020/07/14 Python
Django视图、传参和forms验证操作
2020/07/15 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
python自动生成sql语句的脚本
2021/02/24 Python
Spartoo葡萄牙鞋类网站:线上销售鞋履与时尚配饰
2017/01/11 全球购物
美国最古老的精致书写工具制造商:A.T. Cross(高仕)
2018/01/30 全球购物
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
小学生自我鉴定
2013/10/12 职场文书
酒店前厅员工辞职信
2014/01/08 职场文书
司机辞职报告范文
2014/01/20 职场文书