那有可能吗?
到目前为止我所知道的:
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()
答案 0 :(得分:0)
我正在研究需要实现嵌套开关的python项目。 Eamileann的回答对我很有帮助。 这是基于Eamileann的答案的工作示例。这个例子是我在项目中如何实现的。您可以进行更改以使其适合您的需求。
def fun1_1():print("fun1_1")
def fun1_2():print("fun1_2")
def fun1_3():print("fun1_3")
def fun1(sub_case):
sub_switch = {
1: fun1_1,
2: fun1_2,
3: fun1_3
}
sub_switch.get(sub_case, default_case)()
return
def fun2_1():print("fun2_1")
def fun2_2():print("fun2_2")
def fun2_3():print("fun2_3")
def fun2(sub_case):
sub_switch = {
1: fun2_1,
2: fun2_2,
3: fun2_3
}
sub_switch.get(sub_case, default_case)()
return
def fun3_1():print("fun3_1")
def fun3_2():print("fun3_2")
def fun3_3():print("fun3_3")
def fun3(sub_case):
sub_switch = {
1: fun3_1,
2: fun3_2,
3: fun3_3
}
sub_switch.get(sub_case, default_case)()
return
def default_case(): print("Unsupported case!")
main_switch = {
1: fun1,
2: fun2,
3: fun3
}
if __name__ == "__main__":
main_case = 2
sub_case = 3
main_switch.get(main_case)(sub_case)
答案 1 :(得分:-1)
我不知道您所说的嵌套开关大小写到底是什么意思,但是如果我理解正确,在辅助函数中使用字典映射就没有问题。我的意思是,以您的示例作为示例,这样的事情是可能的:
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()
尽管如此,它看起来还是不太可读...也许您写了您想使用它的确切内容以及如何使用它,我可以为您提供更多有用的答案。