与大多数其他流行的编程语言不同,Python没有内置的switch语句支持,因此我通常使用字典来模拟switch语句。
我意识到通过为每种情况定义一个单独的嵌套函数,可以在case块中包含多个语句,但与其他语言中的switch语句相比,这是相当冗长的:
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版本也简洁:
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));
答案 0 :(得分:2)
作为一种快速简便的解决方案,我只需使用if,elif,else来模拟switch语句。
if option == 0:
#your actions for option 0
elif option == 1:
#your actions for option 1
else:
#the default case
答案 1 :(得分:0)
这是一种用于实现语法近似的简洁解决方法:
def switch(option, blocks):
for key in blocks:
if key == option:
exec blocks[key]
用法:
module_scope_var = 3
switch(2, {
1:'''
print "hello"
print "whee"''',
2:'''
print "#2!!!"
print "woot!"
print module_scope_var*2'''})
输出:
#2!!!
woot!
6
不幸的是,有很多撇号,缩进看起来很奇怪。