如何在python中写一个嵌套的开关盒?

问题描述 投票:2回答:1

甚至有可能吗?

到目前为止我所知道的:

Python不会切换大小写,但是它们有一个叫做字典映射的东西。

def fun1():print("fun1")
def fun2():print("fun2")
def fun3():print("fun3")

def WannaBeSwitch(arg):
    switch = {
        0: fun1,
        1: fun2,
        2: fun3
    }
    return switch.get(arg, "blabla")

if __name__ == "__main__":
    argument = 1
    call_func = WannaBeSwitch(argument)
    call_func()
python-3.x switch-statement
1个回答
-2
投票

我不知道您所说的嵌套开关情况到底是什么意思,但是如果我理解正确,在辅助函数中使用字典映射就没有问题。我的意思是,使用您的示例作为演示,这样的事情是可能的:

def fun1_1():print("fun1_1")
def fun1_2():print("fun1_2")
def fun1_3():print("fun1_3")

def fun1(arg):
    switch = {
        0: fun1_1,
        1: fun1_2,
        2: fun1_3
    }
    return switch.get(arg, "blabla")

def fun2_1():print("fun2_1")
def fun2_2():print("fun2_2")
def fun2_3():print("fun2_3")

def fun2(arg):
    switch = {
        0: fun2_1,
        1: fun2_2,
        2: fun2_3
    }
    return switch.get(arg, "blabla")

def fun3_1():print("fun3_1")
def fun3_2():print("fun3_2")
def fun3_3():print("fun3_3")

def fun3(arg):
    switch = {
        0: fun3_1,
        1: fun3_2,
        2: fun3_3
    }
    return switch.get(arg, "blabla")

def WannaBeSwitch(arg):
    switch = {
        0: fun1,
        1: fun2,
        2: fun3
    }
    return switch.get(arg, "blabla")

if __name__ == "__main__":
    argument1 = 1
    argument2 = 1
    call_func = WannaBeSwitch(argument1)(argument2)
    call_func()

尽管如此,它看起来不是很可读...也许如果您确切地编写了您想使用它的内容以及如何使用它,我可以为您提供更多有用的答案。

© www.soinside.com 2019 - 2024. All rights reserved.