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

南乔
南乔
发布时间:2026-10-13 | 2人浏览过
原创

本文通过Python解析XML时的ElementTree与SAX对比,引出回调函数的概念。文章利用家政服务API的通俗比喻解释回调机制,并提供了Python代码示例展示如何通过函数指针调用回调函数,帮助开发者理解事件响应编程模式。

近期因工作需求,我开始学习使用Python处理多种文件格式,涵盖xmind、xml、excel以及csv等。

在研究Python解析XML的过程中,我注意到这样一段描述:

ElementTree(元素树)被形容为轻量级的DOM,拥有便捷友好的API接口,兼具代码易用性、高执行速度和低内存消耗的优势。相比之下,DOM需要将XML数据完全映射到内存树结构中,导致处理速度较慢且内存占用较高;而SAX采用流式读取XML文件的方式,虽然速度快且内存占用少,但要求用户自行实现回调函数(handler)。

正是这里提到的一个陌生术语——“回调函数”,引发了我的兴趣。随后我查阅资料进行了深入学习,并觉得有必要撰写此文以记录心得、加深印象。文中引用了多位技术大牛的经验,受篇幅限制,此处不再逐一致谢。

关于“回调函数(callback)”,百度百科给出的定义如下:

回调函数是指通过函数指针进行调用的函数。若将函数的指针(即地址)作为参数传递给另一个函数,当该指针被用于调用其所指向的函数时,此函数即被称为回调函数。回调函数并非由实现方直接调用,而是在特定事件或条件触发时,由另一方调用,以此对事件或条件做出响应。

由于个人知识储备有限,上述定义初看令人困惑。为此,我寻找了一些更通俗易懂的解释:这类似于家政服务。家政公司提供了一个API接口:打扫房子,并可执行扫地、擦家具、清洁马桶等多种具体服务。我们将“打扫房子”视为库函数,而具体的打扫方式由用户决定。用户需要预约并执行特定的服务,这种预约及执行具体服务的行为即为“登记回调函数”。为了便于理解,下面提供一个看似简单但核心的实现示例。

# 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 相关产品和应用

全部下载

专题列表