在Python中将控制语句/关键字映射到字典或其他结构

2024-09-28 22:20:20 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题可能很难正确界定。但问题的实质是:是否可以将诸如breakreturncontinue之类的python控制语句放入字典中以供以后使用?在

你可能会问,为什么那些头脑正常的人会想这么做?想象一下你在写一个计算机编程语言的解释器。您正在遍历一个抽象语法树,在一个叶上遇到break语句。现在要实现这一点,您可以在AST的loop interior节点处抛出一个异常。内部节点在python中实现一个while循环,它表示正在解释的代码中的一个循环。在

所以你要做的就是减少这些代码:

def visitWhileStatement(self, ctx):
    while ctx.children[2].accept(self):
        try:
            ctx.children[4].accept(self)
        except LoopControl as lc:
            if lc.value == "break":
                break
            if lc.value == "continue":
                continue

看起来更像:

^{pr2}$

就像您通过字典将==等运算符映射到函数时所做的那样:

^{3}$

我想将break映射到python控制语句:

LoopControl.actions = { "break": break }

但那当然不行。在

这种字典背后的动机是减少重复代码的数量。然后代码在LoopControl中只出现一次,而不是在所实现的语言的每种类型的可中断循环的实现中作为一系列if语句出现。在


Tags: 代码selfif字典节点value语句lc