在这篇文章里,我们会聊一聊为什么Python
决定不支持 witch
语句。
为什么想要聊这个话题呢?
主要是因为switch
在其它语言中太常见了,而 Python
却不支持,这样的独特性本身就值得关注,而回答这个问题,也能更加看清Python
在程序设计上的理念,了解 Python
在语法设计中的决策过程。
本文除了会详细分析 PEP-275
和 PEP-3103
,还会介绍到 Python
最新的发展动态(PEP-622
),即可能要引入的模式匹配(pattern matching
)语法,相信这个话题会开阔大家的眼界,从而对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
或者相近的语法结构,这是为什么呢?
官方文档中有一篇 FAQ
包含了这个问题:Why isn’t there a switch or case statement in Python?
**FAQ
即 Frequently Asked Questions
的缩写,表示常见问题,官方列了 27 个常见问题,完整清单在此:https://mp.