‘壹’ 为什么Python中没有Switch/Case语句
官方的解释说,“用if… elif… elif… else序列很容易来实现 switch / case 语句”。而且可以使用函数字典映射和类的调度方法。
可以说官方的说明并没有解释什么,只是给出了解决方案。换句话说,没有回答为什么。我认为其实官方真正想说的是:“Python 不需要 switch / case 语句”。
‘贰’ 为什么Python中没有Switch/Case语句
同于我用过的其它编程语言,Python 没有 switch / case 语句。为了实现它,我们可以使用字典映射:
这段代码类似于:
Python 代码通常比处理 case 的标准方法更为简短,也可以说它更难理解。当我初次使用 Python 时,感觉很奇怪并且心烦意乱。而随着时间的推移,在 switch 中使用字典的 key 来做标识符变得越来越习以为常。
函数的字典映射
在 Python 中字典映射也可以包含函数或者 lambda 表达式:
虽然zero和one中的代码很简单,但是很多 Python 程序使用这样的字典映射来调度复杂的流程。
类的调度方法
如果在一个类中,不确定要使用哪种方法,可以用一个调度方法在运行的时候来确定。
官方说明
官方文档的解释说,“用if... elif... elif... else序列很容易来实现 switch / case 语句”。而且可以使用函数字典映射和类的调度方法。