使用函数的词典
另一种直接的方法是创建一个函数字典:
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