回调函数的意义以及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实现根据主机名字获得所有ip地址的方法
Jun 28 Python
Python读写zip压缩文件的方法
Aug 29 Python
Python类的继承用法示例
Jan 31 Python
Python选择网卡发包及接收数据包
Apr 04 Python
用Anaconda安装本地python包的方法及路径问题(图文)
Jul 16 Python
python3获取当前目录的实现方法
Jul 29 Python
python网络爬虫 Scrapy中selenium用法详解
Sep 28 Python
pytorch:torch.mm()和torch.matmul()的使用
Dec 27 Python
对tensorflow 中tile函数的使用详解
Feb 07 Python
如何学习Python time模块
Jun 03 Python
PyTorch实现重写/改写Dataset并载入Dataloader
Jul 14 Python
python爬虫---requests库的用法详解
Sep 28 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
Windows下PHP5和Apache的安装与配置
2006/09/05 PHP
PHP - Html Transfer Code
2006/10/09 PHP
ThinkPHP模板中数组循环实例
2014/10/30 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
标准版Eclipse搭建PHP环境的详细步骤
2015/11/18 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
ThinkPHP3.2.3实现分页的方法详解
2016/06/03 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
js注册时输入合法性验证方法
2017/10/21 Javascript
使用javascript做在线算法编程
2018/05/25 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
[42:32]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第二局
2016/02/27 DOTA
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
Python进阶篇之字典操作总结
2016/11/16 Python
Python如何急速下载第三方库详解
2020/11/02 Python
百思买加拿大:Best Buy Canada
2018/03/20 全球购物
会计专业自荐信
2013/12/02 职场文书
车间班组长的职责
2013/12/13 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
环保建议书200字
2014/05/14 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
安全演讲稿开场白
2014/08/25 职场文书
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
2021/05/22 Python
教你怎么用python selenium实现自动化测试
2021/05/27 Python
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript
JavaScript 反射学习技巧
2021/10/16 Javascript