Python 设计模式行为型解释器模式

 更新时间:2022年02月16日 08:59:26   作者:范桂飓  
本文介绍了Python解释器模式,解释器模式即Interpreter Pattern,给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子,下面文章进入更深层学习,需要的小伙伴可以参考一下

一、解释器模式

解释器模式,开发者自定义一种 “有内涵” 的语言(或者叫字符串),并设定相关的解释规则,输入该字符串后可以输出公认的解释,或者执行程序可以理解的动作。

优点:

  • 可扩展性比较好,灵活。
  • 增加了新的解释表达式的方式。
  • 易于实现简单文法。

缺点:

  • 可利用场景比较少。
  • 对于复杂的文法比较难维护。
  • 解释器模式会引起类膨胀。

二、应用场景

  • SQL 解析
  • 符号处理引擎

三、代码示例

实体角色:

  • 终结符表达式:实现与文法中的元素相关联的解释操作,通常一个解释器模式中只有一个终结符表达式,但有多个实例,对应不同的终结符。终结符一半是文法中的运算单元,比如有一个简单的公式 R=R1+R2,在里面 R1 和 R2 就是终结符,对应的解析 R1 和 R2 的解释器就是终结符表达式。
  • 非终结符表达式:文法中的每条规则对应于一个非终结符表达式,非终结符表达式一般是文法中的运算符或者其他关键字,比如:公式 R=R1+R2 中,“+” 就是非终结符,解析 “+” 的解释器就是一个非终结符表达式。非终结符表达式根据逻辑的复杂程度而增加,原则上每个文法规则都对应一个非终结符表达式。
import time
import datetime

"""实现一段简单的中文编程"""


class Code:
    """自定义语言"""
    def __init__(self, text=None):
        self.text = text


class InterpreterBase:
    """自定义解释器基类"""
    def run(self, code):
        pass


class Interpreter(InterpreterBase):
    """实现解释器方法,实现终结符表达式字典"""
    def run(self, code):
        code = code.text
        code_dict = {'获取当前时间戳': time.time(), "获取当前日期": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")}
        print(code_dict.get(code))


if __name__ == '__main__':
    test = Code()
    test.text = '获取当前时间戳'
    data1 = Interpreter().run(test)
    test.text = '获取当前日期'
    data2 = Interpreter().run(test)

到此这篇关于Python 设计模式行为型解释器模式的文章就介绍到这了,更多相关Python解释器模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何使用Typora+MinIO+Python代码打造舒适协作环境

    如何使用Typora+MinIO+Python代码打造舒适协作环境

    这篇文章主要介绍了如何使用Typora+MinIO+Python代码打造舒适协作环境,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • 对python中的iter()函数与next()函数详解

    对python中的iter()函数与next()函数详解

    今天小编就为大家分享一篇对python中的iter()函数与next()函数详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python中的yield全方位解读

    Python中的yield全方位解读

    这篇文章主要介绍了Python中的yield全方位解读,在 Python 中,使用了 yield 的函数被称为生成器,跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器,需要的朋友可以参考下
    2023-08-08
  • Python实现合成多张图片到PDF格式

    Python实现合成多张图片到PDF格式

    在日常生活中,经常会遇到需要提交身份证正反面证明资料的情况,而且这些网站大部分只接受pdf格式,这时候我们就需要把身份证正反面两张图片合成为一个pdf文件。本文将为大家提供用Python实现这一要求的方法,需要的可以参考一下
    2022-02-02
  • Python中初始化一个二维数组及注意事项说明

    Python中初始化一个二维数组及注意事项说明

    这篇文章主要介绍了Python中初始化一个二维数组及注意事项说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • pandas 如何分割字符的实现方法

    pandas 如何分割字符的实现方法

    这篇文章主要介绍了pandas 如何分割字符的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python中Qslider控件实操详解

    Python中Qslider控件实操详解

    在本篇文章里小编给大家整理的是一篇关于Python中Qslider控件实操详解内容,对此有兴趣的朋友们可以跟着学习参考下。
    2021-02-02
  • python求列表交集的方法汇总

    python求列表交集的方法汇总

    这篇文章主要介绍了python求列表交集的方法,实例汇总了三个常用的方法,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-11-11
  • python分布式爬虫中消息队列知识点详解

    python分布式爬虫中消息队列知识点详解

    在本篇文章里小编给大家整理的是python分布式爬虫中消息队列知识点详解内容,有兴趣的朋友们可以参考下。
    2020-11-11
  • Python OpenCV处理图像之图像像素点操作

    Python OpenCV处理图像之图像像素点操作

    这篇文章主要为大家详细介绍了Python OpenCV处理图像之图像像素点操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07

最新评论