1

与大多数其他流行的编程语言不同,Python 没有内置对 switch 语句的支持,所以我通常使用字典来模拟 switch 语句。

我意识到可以通过为每个案例定义一个单独的嵌套函数来在一个案例块中包含多个语句,但与其他语言中的 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));
4

2 回答 2

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
于 2013-08-11T21:53:01.103 回答
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

不幸的是,其中涉及很多撇号,而且缩进看起来很奇怪。

于 2013-08-11T22:05:14.587 回答