python 状态机第三方库_简单理解Python中基于生成器的状态机

本文介绍了Python中使用生成器实现状态机的概念,强调了生成器在效率和代码结构方面的优势。通过一个简化版的数字流处理示例,展示了如何用生成器替代基于类的状态机,并提供了完整的代码示例。文章探讨了如何根据输入的数字跳转到不同的处理状态,如'ONES', 'TENS', 'TWENTIES',并允许在运行时通过用户输入改变流程。" 132653547,19673107,Matlab实现:瞬态信号分析的能量集中小波变换,"['算法', '信号处理', 'Matlab', '小波变换', '时频分析']
摘要由CSDN通过智能技术生成

简单生成器有许多优点。生成器除了能够用更自然的方法表达一类问题的流程之外,还极大地改善了许多效率不足之处。在 Python 中,函数调用代价不菲;除其它因素外,还要花一段时间解决函数参数列表(除了其它的事情外,还要分析位置参数和缺省参数)。初始化框架对象还要采取一些建立步骤(据 Tim Peters 在 comp.lang.python 上所说,有 100 多行 C 语言程序;我自己还没检查 Python 源代码呢)。与此相反,恢复一个生成器就相当省力;参数已经解析完了,而且框架对象正“无所事事地”等待恢复(几乎不需要额外的初始化)。当然,如果速度是最重要的,您不应该使用字节码已编译过的动态语言;但即使在速度不是主要考虑因素的情况下,快点总比慢点好。

回忆状态机

在“可爱的 Python”前面的另一篇文章中,我介绍了StateMachine 类 ,给定的机器需要多少状态处理程序,它就允许用户添加多少状态处理程序。在模型中,将一个或多个状态定义为终态(end state),仅将一个状态定义为初始状态(start state)(调用类方法对此进行配置)。每个处理程序都有某种必需的结构;处理程序将执行一系列操作,然后过一会儿,它带着一个标记返回到 StateMachine.run() 方法中的循环内,该标记指出了想得到的下一个状态。同样,用 cargo 变量允许一个状态把一些(未处理的)信息传递给下一个状态。

我介绍的 StateMachine 类的典型用途是以一个有状态的方式使用输入。例如,我所用的一个文本处理工具(Txt2Html)从一个文件中读取数行内容;依据每行所属的类别,需要以特殊的方式对其进行处理。然而,您经常需要看看前面几行提供的上下文来确定当前行属于

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值