很多小伙伴们会有个疑问,Python中为什么不支持Switch语句?是啊,为什么Python不支持Switch语句,那么小编就通过这篇文章来告诉大家原因。
主要是因为 switch 在其它语言中太常见了,而 Python 却不支持,这样的独特性本身就值得关注,而回答这个问题,也能更加看清 Python 在程序设计上的理念,了解 Python 在语法设计中的决策过程。
一般而言,switch 的语法格式如下:
switch(expression){ case value1: // 语句 break; // 可选 case value2: // 语句 break; // 可选 default: // 可选 // 语句}复制代码 】
有一篇 文档中的FAQ 包含了这个问题:Why isn’t there a switch or case statement in Python?
FAQ 即 Frequently Asked Questions 的缩写,表示常见问题,列了 27 个常见问题,该文档给出了几个建议,告诉了我们几个 switch/case 的替代方案:
使用 if-elif-else 条件判断语句
使用字典,将 case 值与调用的函数映射起来
使用内置 getattr() 检索特定的对象调用方法
曾有人提出过一些提案(即 PEP-275 和 PEP-3103),想给 Python 引入 switch 语法,然而,对于“是否以及如何进行靶场测试”,大家没有达成一致的共识。
靶场测试,即 range test,指的是对武器弹药的技术性能作各种测试验证,与药物的临床试验一样,都是在最终产品交付前的一项关键性测试。
最后,让我们回到标题中的问题:Python 为什么不支持 switch 语句?
文档的 FAQ 对此问题有一个解答,告诉我们有几个不错的替代写法,同时也留下了一条线索:曾有 PEP 提议引入 switch,只是没有成功实现。
沿着这条线索,本文拆解了 PEP-275 和 PEP-3103 这两篇文档,带大家看到了 Python 社区里提出过的风格各异的 switch 方案,以及诸多的悬而未决的问题。
最后,我们还关注到了最新的 PEP-622 的动态,看起来 switch 的“孪生兄弟” match 语法有望引入到 Python 中!