对于case/switch语句,python等价于什么?

What is the Python equivalent for a case/switch statement?

本问题已经有最佳答案,请猛点这里访问。

我想知道,对于case语句是否有一个python等价物,比如vb.net或c上提供的示例?


虽然官方文档不愿意提供转换,但我已经看到了使用字典的解决方案。

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# define the function blocks
def zero():
    print"You typed zero.
"


def sqr():
    print"n is a perfect square
"


def even():
    print"n is an even number
"


def prime():
    print"n is a prime number
"


# map the inputs to the function blocks
options = {0 : zero,
           1 : sqr,
           4 : sqr,
           9 : sqr,
           2 : even,
           3 : prime,
           5 : prime,
           7 : prime,
}

然后调用等效开关块:

1
options[num]()

如果你严重依赖于摔倒,这就开始崩溃。


直接替换为if/elif/else

然而,在许多情况下,有更好的方法可以在Python中实现它。请参见"在python中替换switch语句?".