在这篇文章里,我们会聊一聊为什么Python 决定不支持 witch语句。
为什么想要聊这个话题呢?
主要是因为switch 在其它语言中太常见了,而 Python 却不支持,这样的独特性本身就值得关注,而回答这个问题,也能更加看清Python 在程序设计上的理念,了解 Python在语法设计中的决策过程。
本文除了会详细分析 PEP-275 和 PEP-3103,还会介绍到 Python最新的发展动态(PEP-622),即可能要引入的模式匹配(pattern matching)语法,相信这个话题会开阔大家的眼界,从而对switch语法有更为全面的认识。
1、switch 是什么?
在开始正题之前,我们需要先聊聊 switch 是什么?
有些同学可能会第一时间想到它……

别总想着游戏啦,我们要说的是编程语言中的switch 语句。
一般而言,switch 的语法格式如下:
switch(expression){
case value1:
// 语句
break; // 可选
case value2:
// 语句
break; // 可选
default: // 可选
// 语句
}
使用流程图来表示,大概是这样的:

它的用法不难理解:switch 语句的值满足哪一个 case情况,就会执行对应的代码块,执行时遇到 break 就跳出,否则就继续执行下一个case 分支;一般会在最后放一个default分支,作为兜底。
大多数语言都提供了 switch 语句或者极其相似的东西,例如,在 C/C++/Java /Go 等静态语言中,它们都支持switch-case 结构;在Ruby中有类似的 case-when结构,在 Shell 语言中,有相似的case-in结构,在 Perl 中,有 switch-case-else……
switch 语句的好处是支持“单条件多分支”的选择结构,相比if-else 的二分选择结构,在某些时候会更为简洁清晰。
但是,在 Python 中,我们看不到 switch-case 或者相近的语法结构,这是为什么呢?
2、Python 为什么不支持 switch?
官方文档中有一篇 FAQ 包含了这个问题:Why isn’t there a switch or case statement in Python?

**FAQ 即 Frequently Asked Questions的缩写,表示常见问题,官方列了 27 个常见问题,完整清单在此:https://mp.weixin.qq.com/s/zabIvt4dfu_rf7SmGZXqXg **
该文档给出了几个建议,告诉了我们几个 switch/case 的替代方案:
(1),使用if-elif-else 条件判断语句
(2),使用字典,将case值与调用的函数映射起来
(3),用内

最低0.47元/天 解锁文章
53

被折叠的 条评论
为什么被折叠?



