回调函数的意义以及python实现实例

作者:首席小学生 时间:2021-07-17 11:42:07 

因工作需要,最近在学习使用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次抽油烟机,好吧,很变态

最后说一句,看到这应该懂了的一句话:

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。

来源:http://www.cnblogs.com/hainan-zhang/p/6222552.html

标签:python,回调函数
0
投稿

猜你喜欢

  • 教你使用pyinstaller打包Python教程

    2021-01-20 01:07:28
  • PHP simplexml_import_dom()函数讲解

    2023-06-09 19:18:30
  • Python格式化日期时间操作示例

    2022-04-23 23:07:19
  • Vue.js开发环境搭建

    2024-05-28 15:55:38
  • Python利用Flask-Mail实现发送邮件详解

    2023-09-29 03:02:18
  • JavaScript数学对象Math操作数字的方法

    2024-04-10 10:54:34
  • js中typeof的用法汇总

    2024-04-17 10:38:45
  • ASP.NET 2.0中的数据操作之九:跨页面的主/从报表

    2023-07-19 20:28:42
  • Python中字符串对象语法分享

    2022-04-19 14:48:34
  • Python 中的lambda匿名函数和三元运算符

    2023-04-21 05:22:18
  • MySQL多表查询的具体实例

    2024-01-22 00:13:20
  • Python3变量与基本数据类型用法实例分析

    2023-07-09 10:52:39
  • ThinkPHP5&5.1实现验证码的生成、使用及点击刷新功能示例

    2023-11-17 02:54:39
  • 在Django的URLconf中进行函数导入的方法

    2023-07-10 10:46:26
  • 解决出现SoapFault (looks like we got no XML document)的问题

    2023-11-19 04:21:01
  • 详解vue数组遍历方法forEach和map的原理解析和实际应用

    2024-05-05 09:06:18
  • Javascript this 关键字 详解

    2024-06-07 15:51:18
  • 解析Python中的eval()、exec()及其相关函数

    2023-12-16 02:51:59
  • Python实现图像手绘效果的方法详解

    2021-10-27 08:22:23
  • ASP UTF-8编码生成静态网页的函数

    2011-03-07 11:24:00
  • asp之家 网络编程 m.aspxhome.com