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

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

本文通过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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。