回调函数的意义以及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实现Logger打印功能的方法详解
Sep 01 Python
python字符串的方法与操作大全
Jan 30 Python
Python socket实现简单聊天室
Apr 01 Python
tensorflow学习笔记之简单的神经网络训练和测试
Apr 15 Python
彻彻底底地理解Python中的编码问题
Oct 15 Python
使用pickle存储数据dump 和 load实例讲解
Dec 30 Python
Python如何实现的二分查找算法
May 27 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
Jun 02 Python
Python3爬虫中Ajax的用法
Jul 10 Python
python 动态渲染 mysql 配置文件的示例
Nov 20 Python
python xlwt模块的使用解析
Apr 13 Python
教你怎么用Python操作MySql数据库
May 31 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实现用session来实现记录用户登陆信息
2018/10/15 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
2019/06/14 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
JavaScript 数组运用实现代码
2010/04/13 Javascript
javascript基础之查找元素的详细介绍(访问节点)
2013/07/05 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
JavaScript实战之带收放动画效果的导航菜单
2016/08/16 Javascript
JavaScript之iterable_动力节点Java学院整理
2017/06/29 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
Python编程之string相关操作实例详解
2017/07/22 Python
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
2018/05/31 Python
python 检查文件mime类型的方法
2018/12/08 Python
python 变量初始化空列表的例子
2019/11/28 Python
在python tkinter界面中添加按钮的实例
2020/03/04 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
2020/06/23 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
基于html5 DeviceOrientation 实现微信摇一摇功能
2015/09/25 HTML / CSS
Expedia法国:全球最大在线旅游公司
2018/09/30 全球购物
自我鉴定的范文
2013/10/03 职场文书
寻找最美家庭活动方案
2014/08/20 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
2014年班主任工作总结
2014/11/08 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
基于Redis过期事件实现订单超时取消
2021/05/08 Redis
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL
Python实现信息轰炸工具(再也不怕说不过别人了)
2021/06/11 Python