使用函数的词典

另一种直接的方法是创建一个函数字典:

switch = {
    1: lambda: 'one',
    2: lambda: 'two',
    42: lambda: 'the answer of life the universe and everything',
}

然后你添加一个默认函数:

def default_case():
    raise Exception('No case found!')

并使用字典的 get 方法获取给定值的函数以检查并运行它。如果字典中不存在值,则运行 default_case

>>> switch.get(1, default_case)()
one
>>> switch.get(2, default_case)()
two
>>> switch.get(3, default_case)()
…
Exception: No case found!
>>> switch.get(42, default_case)()
the answer of life the universe and everything

你也可以制作一些语法糖,这样开关看起来更好:

def run_switch(value):
    return switch.get(value, default_case)()

>>> run_switch(1)
one