使用函式的詞典

另一種直接的方法是建立一個函式字典:

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