[Python] switch...case的实现

Python与C++不同,并没有提供switch…case语句。

Python 官方文档大概的意思是,你可以用if..elif..elif..else来实现同样的功能,所以似乎就没必要加入switch…case了。

参考:官方文档-Why isn’t there a switch or case statement in Python?

如果一定要实现,可以采用如下的方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def case1(somearg):
pass
def case2(somearg):
pass
def case3(somearg):
pass

switch = { #dict
1:case1,
2:case2,
3:case3
}

switch[case](arg)

代码实现参考知乎-徐辰的回答-Python中为什么没有switch语法结构,有什么代替方案吗?

因为Python中一切皆对象,所以函数名(e.g. case1)其实是一个指向该函数对象的指针, 所以可以直接写入到switch这个dict中。