Python开关案例允许可选参数


问题内容

我知道python中没有切换用例,可以使用字典代替。但是,如果我想将参数传递给函数zero()而没有参数one()怎么办?我没有发现与此有关的任何问题。

def zero(number):
    return number == "zero"

def one():
    return "one"

def numbers_to_functions_to_strings(argument):
    switcher = {
        0: zero,
        1: one,
        2: lambda: "two",
    }
    # Get the function from switcher dictionary
    func = switcher.get(argument, lambda: "nothing")
    # Execute the function
    return func()

无需将它们分为两种情况的最简单方法是什么?我认为func()需要采用(可选)参数?


问题答案:

您可以使用部分

from functools import partial

def zero(number):
    return number == "zero"

def one():
    return "one"

def numbers_to_functions_to_strings(argument):
    switcher = {
        0: partial(zero, argument),
        1: one,
        2: lambda: "two",
    }

    func = switcher.get(argument, lambda: "nothing")
    return func()