论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
全网最适合入门的面向对象编程教程:46 Python函数方法 ...
全网最适合入门的面向对象编程教程:46 Python函数方法与接口-函数与事件驱 ...
冬雨财经
金牌会员
|
2024-9-9 21:55:07
|
显示全部楼层
|
阅读模式
楼主
主题
848
|
帖子
848
|
积分
2544
全网最适合入门的面向对象编程教程:46 Python 函数方法与接口-函数与事件驱动框架
择要:
函数是 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实现常见数据结构-链表、树、哈希表、图和堆
更多精彩内容可看:
给你的 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
正文
函数
函数是一个定名的代码块,需要 0 个或多个输入参数,运行以后会返回输出值。在 Python 中,函数不仅是对象,也是第一类对象(First-Class Object),这是 Python 函数的一大特性。函数作为对象可以赋值给一个变量、可以作为元素添加到集合对象中、可作为参数值传递给别的函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的。
简单来说,就是在 Python 中可以把函数像普通变量一样任意地使用,。包括赋值,以及作为别的函数的参数和返回值。如许就能很容易地写出高阶函数与闭包的代码。而在其他应用面向对象设计的语言中(如 C++)实现类似操作,需要借助函数指针举行实现。
在很多情况下,我们需要将函数作为参数传递到另一个函数中。最典型的例子就是事件驱动编程模式,
所谓事件驱动编程模式不同于原先依次实行每个函数的编程模式,其基本的处置惩罚思路是预先设计一个事件循环所形成的程序,这个事件循环程序不断地检查如今要处置惩罚的信息,根据要处置惩罚的信息实行一个触发函数举行必要的处置惩罚。
此中这个外部信息大概来自一个目次夹中的文件,大概来自键盘或鼠标的动作,大概是一个时间事件。
从事件角度说,事件驱动程序的基本结构是由一个事件收集器、一个事件发送器和一个事件处置惩罚器组成。事件收集器专门负责收集所有事件,包括来自用户的(如鼠标、键盘事件等)、来自硬件的(如时钟事件等)和来自软件的(如操作体系、应用程序本身等)。事件发送器负责将收集器收集到的事件分发到目标对象中。事件处置惩罚器做具体的事件相应工作,它往往要到实现阶段才完全确定。
在事件处置惩罚器中一般都需要提前传入一个注册好的回调函数,回调函数被注册之后,程序将继续实行背面的语句,而回调函数则会在对应事件产生后被异步调用。
函数身为一个对象,拥有对象模型的三个通用属性:id、类型、和值。在下面的代码中,我们创建了一个平均值滤波函数,实现三个周期的传感器采样值计算平均值,在代码中,DataList 为全局变量,它用来记录 FileterLength 个周期的采样值,AverageFilter(value)为滤波函数,它的输入为新采集到的数据,函数中,首先将 DataList[]中的数据举行移位,并将新采集到的数据保存到 DataList[]末了的元素中,同时计算 DataList[]中 10 个数据的和,末了返回 FileterLength 个数据和的平均值。示例代码如下:
_# 全局变量,记录三个周期的采样值_
FileterLength = 3
DataList = [0] * FileterLength
def AverageFilter(value):
'''
平均值滤波函数,实现三个周期的传感器采样值计算平均值
:param value: 当前采样值
:return: 滤波后的传感器数值
'''
global DataList
_# 临时变量,存储列表中数据之和_
sum = 0
for i in range(FileterLength-1):
_# 实现列表的移位操作_
DataList[i] = DataList[i+1]
_# 实现列表求和_
sum += DataList[i]
DataList[FileterLength-1] = value
sum += DataList[FileterLength-1]
average = sum / len(DataList)
return average
复制代码
我们首先访问一下这个函数的基本属性:
print(id(AverageFilter))
print(type(AverageFilter))
print(AverageFilter)
复制代码
运行效果如下:
我们可以给函数添加自界说属性并且访问自界说属性:
AverageFilter.description = ("The average value filter function realizes the calculation of the average value "
"of the sensor sample value for three periods")
print(AverageFilter.description)
复制代码
运行效果如下:
事件驱动框架计时器
接下来我们用一个事件驱动框架计时器的示例更好的分析函数作为参数可以传递到另一个函数中的相关应用。示例代码如下:
[code]import datetimeimport time_# 界说定时器事件类_class TimedEvent: def __init__(self, endtime, callback): ''' 初始化方法,存储endtime和callback :param endtime: callback实行前需要等待的时间 :param callback: 回调函数,即到达实行时间后调用的函数 ''' self.endtime = endtime self.callback = callback def ready(self): ''' 判断是否事件已经到达了该实行的适合 :return: ''' return self.endtime
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
冬雨财经
金牌会员
这个人很懒什么都没写!
楼主热帖
信息与网络安全期末复习(完整版) ...
ts保姆级教程,别再说你不会ts了 ...
iOS全埋点解决方案-手势采集 ...
如何通过JDBC访问MySQL数据库?手把手 ...
Elasticsearch学习系列五(零停机索引 ...
Linux安装PHP8 新版笔记
《ABP Framework 极速开发》教程首发 ...
有趣的特性:CHECK约束
SignalR 2 与mvc 5实现实时聊天功能 ...
React技术栈 --》 JSX语法书写JS和Reac ...
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表