What's the most concise way to include multiple statements in a Python switch case?
与大多数其他流行的编程语言不同,Python没有对switch语句的内置支持,因此我通常使用字典来模拟switch语句。
我认识到,通过为每种情况定义单独的嵌套函数,可以在case块中包含多个语句,但与其他语言的switch语句相比,这相当冗长:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | def switchExample(option): def firstOption(): print("First output!") print("Second output!") return 1 def secondOption(): print("Lol") return 2 options = { 0 : firstOption, 1 : secondOption, }[option] if(options != None): return options() print(switchExample(0)) print(switchExample(1)) |
除了我已经编写的实现之外,是否还有更简洁的方法来模拟Python中的switch语句?我注意到这个等效的javascript函数更简洁,更容易阅读,我希望python版本也更简洁:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function switchExample(input){ switch(input){ case 0: console.log("First output!"); console.log("Second output!"); return 1; case 1: console.log("Lol"); return 2; } } console.log(switchExample(0)); console.log(switchExample(1)); |
作为一个快速简单的解决方案,我只需使用if、elif或else来模拟switch语句。
1 2 3 4 5 6 | if option == 0: #your actions for option 0 elif option == 1: #your actions for option 1 else: #the default case |
这里有一种老生常谈的解决方法来实现您语法的近似值:
1 2 3 4 | def switch(option, blocks): for key in blocks: if key == option: exec blocks[key] |
用途:
1 2 3 4 5 6 7 8 9 10 | module_scope_var = 3 switch(2, { 1:''' print"hello" print"whee"''', 2:''' print"#2!!!" print"woot!" print module_scope_var*2'''}) |
输出:
1 2 3 | #2!!! woot! 6 |
不幸的是,这里有很多撇号,而且缩进看起来很奇怪。