论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
全网最适合入门的面向对象编程教程:47 Python函数方法 ...
全网最适合入门的面向对象编程教程:47 Python函数方法与接口-回调函数Call ...
反转基因福娃
金牌会员
|
2024-9-11 23:09:12
|
显示全部楼层
|
阅读模式
楼主
主题
915
|
帖子
915
|
积分
2745
全网最适合入门的面向对象编程教程: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 中如何实现回调函数呢,看代码:
_# 被调用的回调函数_
def my_callback(input):
print("function my_callback was called with %s input" % (input,))
_# 调用函数_
def caller(input, func):
func(input)
for i in range(5):
caller(i, my_callback)
复制代码
回调函数场景应用场景
回调函数常用于以下场景:
在异步编程中,回调函数用于处置惩罚异步操纵完成后的效果。例如,使用 asyncio 模块进行异步编程时,可以使用回调函数处置惩罚异步使命的效果。
import asyncio
async def async_task(callback):
# 模拟异步操作
await asyncio.sleep(1)
# 调用回调函数
callback("Async Result")
def handle_result(result):
print("Callback received result:", result)
# 执行异步任务并使用回调函数
async def main():
await async_task(handle_result)
asyncio.run(main())
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
反转基因福娃
金牌会员
这个人很懒什么都没写!
楼主热帖
设计模式---组合模式
【Unity3D】Transform组件
拿到12家offer,想给大家分享一下面试 ...
Spark快速上手(4)Spark核心编程-Spark ...
【渗透攻击】PowerShell与Shell 有什么 ...
如何将鸿蒙(harmonyOS)系统退回安卓 ...
写了这么久Java项目,是否还记得你的第 ...
echarts使用及遇到的问题
使用 Kubeadm 部署 K8S安装
软件工程经济学第一章
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表