一篇文章告诉你python为什么不支持switch语句

在这篇文章里,我们会聊一聊为什么Python 决定不支持 witch语句。

为什么想要聊这个话题呢?

主要是因为switch 在其它语言中太常见了,而 Python 却不支持,这样的独特性本身就值得关注,而回答这个问题,也能更加看清Python 在程序设计上的理念,了解 Python在语法设计中的决策过程。

本文除了会详细分析 PEP-275PEP-3103,还会介绍到 Python最新的发展动态(PEP-622),即可能要引入的模式匹配(pattern matching)语法,相信这个话题会开阔大家的眼界,从而对switch语法有更为全面的认识。

1、switch 是什么?

在开始正题之前,我们需要先聊聊 switch 是什么?

有些同学可能会第一时间想到它……

一篇文章告诉你python为什么不支持switch语句_第1张图片

别总想着游戏啦,我们要说的是编程语言中的switch 语句。

一般而言,switch 的语法格式如下:

switch(expression){
   
    case value1:
       // 语句
       break; // 可选
    case value2:
       // 语句
       break; // 可选
    default: // 可选
       // 语句
}

使用流程图来表示,大概是这样的:

一篇文章告诉你python为什么不支持switch语句_第2张图片

它的用法不难理解: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?

一篇文章告诉你python为什么不支持switch语句_第3张图片

**FAQFrequently Asked Questions的缩写,表示常见问题,官方列了 27 个常见问题,完整清单在此:https://mp.

你可能感兴趣的:(python,经验分享,恰饭,程序人生)