全网最适合入门的面向对象编程教程:47 Python函数方法与接口-回调函数Call ...

打印 上一主题 下一主题

主题 914|帖子 914|积分 2742

全网最适合入门的面向对象编程教程:47 Python 函数方法与接口-回调函数 Callback


摘要:

回调函数是编程中一种非常常见的模式,用于将函数作为参数传递给其他函数或方法。这种模式在 Python 中广泛应用于事件处置惩罚、异步编程、函数式编程等场景。
原文链接:

FreakStudio的博客
往期保举:

学嵌入式的你,还不会面向对象??!
全网最适合入门的面向对象编程教程:00 面向对象计划方法导论
全网最适合入门的面向对象编程教程:01 面向对象编程的基本概念
全网最适合入门的面向对象编程教程:02 类和对象的 Python 实现-使用 Python 创建类
全网最适合入门的面向对象编程教程:03 类和对象的 Python 实现-为自界说类添加属性
全网最适合入门的面向对象编程教程:04 类和对象的Python实现-为自界说类添加方法
全网最适合入门的面向对象编程教程:05 类和对象的Python实现-PyCharm代码标签
全网最适合入门的面向对象编程教程:06 类和对象的Python实现-自界说类的数据封装
全网最适合入门的面向对象编程教程:07 类和对象的Python实现-范例注解
全网最适合入门的面向对象编程教程:08 类和对象的Python实现-@property装饰器
全网最适合入门的面向对象编程教程:09 类和对象的Python实现-类之间的关系
全网最适合入门的面向对象编程教程:10 类和对象的Python实现-类的继承和里氏替换原则
全网最适合入门的面向对象编程教程:11 类和对象的Python实现-子类调用父类方法
全网最适合入门的面向对象编程教程:12 类和对象的Python实现-Python使用logging模块输出程序运行日志
全网最适合入门的面向对象编程教程:13 类和对象的Python实现-可视化阅读代码神器Sourcetrail的安装使用
全网最适合入门的面向对象编程教程:全网最适合入门的面向对象编程教程:14 类和对象的Python实现-类的静态方法和类方法
全网最适合入门的面向对象编程教程:15 类和对象的 Python 实现-__slots__邪术方法
全网最适合入门的面向对象编程教程:16 类和对象的Python实现-多态、方法重写与开闭原则
全网最适合入门的面向对象编程教程:17 类和对象的Python实现-鸭子范例与“file-like object“
全网最适合入门的面向对象编程教程:18 类和对象的Python实现-多重继承与PyQtGraph串口数据绘制曲线图
全网最适合入门的面向对象编程教程:19 类和对象的 Python 实现-使用 PyCharm 主动天生文件注释和函数注释
全网最适合入门的面向对象编程教程:20 类和对象的Python实现-组合关系的实现与CSV文件保存
全网最适合入门的面向对象编程教程:21 类和对象的Python实现-多文件的组织:模块module和包package
全网最适合入门的面向对象编程教程:22 类和对象的Python实现-非常和语法错误
全网最适合入门的面向对象编程教程:23 类和对象的Python实现-抛出非常
全网最适合入门的面向对象编程教程:24 类和对象的Python实现-非常的捕捉与处置惩罚
全网最适合入门的面向对象编程教程:25 类和对象的Python实现-Python判断输入数据范例
全网最适合入门的面向对象编程教程:26 类和对象的Python实现-上下文管理器和with语句
全网最适合入门的面向对象编程教程:27 类和对象的Python实现-Python中非常层级与自界说非常类的实现
全网最适合入门的面向对象编程教程:28 类和对象的Python实现-Python编程原则、哲学和规范大汇总
全网最适合入门的面向对象编程教程:29 类和对象的Python实现-断言与防御性编程和help函数的使用
全网最适合入门的面向对象编程教程:30 Python的内置数据范例-object根类
全网最适合入门的面向对象编程教程:31 Python的内置数据范例-对象Object和范例Type
全网最适合入门的面向对象编程教程:32 Python的内置数据范例-类Class和实例Instance
全网最适合入门的面向对象编程教程:33 Python的内置数据范例-对象Object和范例Type的关系
全网最适合入门的面向对象编程教程:34 Python的内置数据范例-Python常用复合数据范例:元组和命名元组
全网最适合入门的面向对象编程教程:35 Python的内置数据范例-文档字符串和__doc__属性
全网最适合入门的面向对象编程教程:36 Python的内置数据范例-字典
全网最适合入门的面向对象编程教程:37 Python常用复合数据范例-列表和列表推导式
全网最适合入门的面向对象编程教程:38 Python常用复合数据范例-使用列表实现堆栈、队列和双端队列
全网最适合入门的面向对象编程教程:39 Python常用复合数据范例-集合
全网最适合入门的面向对象编程教程:40 Python常用复合数据范例-枚举和enum模块的使用
全网最适合入门的面向对象编程教程:41 Python常用复合数据范例-队列(FIFO、LIFO、优先级队列、双端队列和环形队列)
全网最适合入门的面向对象编程教程:42 Python常用复合数据范例-collections容器数据范例
全网最适合入门的面向对象编程教程:43 Python常用复合数据范例-扩展内置数据范例
全网最适合入门的面向对象编程教程:44 Python内置函数与邪术方法-重写内置范例的邪术方法
全网最适合入门的面向对象编程教程:45 Python实现常见数据结构-链表、树、哈希表、图和堆
全网最适合入门的面向对象编程教程:46 Python函数方法与接口-函数与事件驱动框架
更多精彩内容可看:

给你的 Python 加加快:一文速通 Python 并行计算
一文搞懂 CM3 单片机调试原理
肝了半个月,嵌入式技术栈大汇总出炉
电子计算机类比赛的“武林秘籍”
一个MicroPython的开源项目集锦:awesome-micropython,包含各个方面的Micropython工具库
Avnet ZUBoard 1CG开辟板—深度学习新选择
SenseCraft 摆设模型到Grove Vision AI V2图像处置惩罚模块
文档和代码获取:

可访问如下链接进行对文档下载:
https://github.com/leezisheng/Doc

本文档重要介绍如何使用 Python 进行面向对象编程,须要读者对 Python 语法和单片机开辟具有基本了解。相比其他讲解 Python 面向对象编程的博客或书籍而言,本文档更加详细、侧重于嵌入式上位机应用,以上位机和下位机的常见串口数据收发、数据处置惩罚、动态图绘制等为应用实例,同时使用 Sourcetrail 代码软件对代码进行可视化阅读便于读者理解。
相关示例代码获取链接如下:https://github.com/leezisheng/Python-OOP-Demo
正文

从系统条理角度来看,回调函数通常分为以下两种范例:
从实行时序角度来看,回调函数可以分为以下几种范例:
回调函数的界说和使用

在计算机程序计划中,回调函数,或简称回调(Callback),是指通过函数参数传递到其它代码的,某一块可实行代码的引用。这一计划允许了底层代码调用在高层界说的子程序。简单来说就是,界说一个函数,把这个函数名看成另一个函数的参数。这个用参数命名的函数就叫作回调函数。
为什么须要 callback,为的就是让库函数使用更加灵活。编程分为两类:系统编程(system programming)和应用编程(application programming)。所谓系统编程,简单来说,就是编写库;而应用编程就是使用写好的各种库来编写具某种功用的程序,也就是应用。系统程序员会给自己写的库留下一些接口,即 API(application programming interface,应用编程接口),以供应用程序员使用。所以在抽象层的图示里,库位于应用的底下。当程序跑起来时,一般情况下,应用程序(application program)会时常通过 API 调用库里所预先备好的函数。但是有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目的使命。这个被传入的、后又被调用的函数就称为回调函数(callback function)。

可以看到,回调函数通常和应用处于同一抽象层(由于传入什么样的回调函数是在应用级别决定的)。而回调就成了一个高层调用底层,底层再回过头来调用高层的过程。(我认为)这应该是回调最早的应用之处,也是其得名云云的原因。在回调中,我们使用某种方式,把回调函数像参数一样传入中心函数。可以这么理解,在传入一个回调函数之前,中心函数是不完整的。换句话说,程序可以在运行时,通过登记差别的回调函数,来决定、改变中心函数的举动。这就比简单的函数调用要灵活太多了。
打个比方,有一家旅馆提供叫醒服务,但是要求旅客自己决定叫醒的方法。可以是打客房电话,也可以是派服务员去拍门,睡得死怕耽误事的,还可以要求往自己头上浇盆水。这里,“叫醒”这个举动是旅馆提供的,相当于库函数,但是叫醒的方式是由旅客决定并告诉旅馆的,也就是回调函数。而旅客告诉旅馆怎么叫醒自己的动作,也就是把回调函数传入库函数的动作,称为登记回调函数(to register a callback function)。
那么,在 python 中如何实现回调函数呢,看代码:
  1. _# 被调用的回调函数_
  2. def my_callback(input):
  3.     print("function my_callback was called with %s input" % (input,))
  4. _# 调用函数_
  5. def caller(input, func):
  6.     func(input)
  7.    
  8. for i in range(5):
  9.     caller(i, my_callback)
复制代码
回调函数场景应用场景

回调函数常用于以下场景:
在异步编程中,回调函数用于处置惩罚异步操纵完成后的效果。例如,使用 asyncio 模块进行异步编程时,可以使用回调函数处置惩罚异步使命的效果。
  1. import asyncio
  2. async def async_task(callback):
  3.     # 模拟异步操作
  4.     await asyncio.sleep(1)
  5.     # 调用回调函数
  6.     callback("Async Result")
  7. def handle_result(result):
  8.     print("Callback received result:", result)
  9. # 执行异步任务并使用回调函数
  10. async def main():
  11.     await async_task(handle_result)
  12. asyncio.run(main())
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

反转基因福娃

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表