Python为什么不支持switch语句?看完你就知道了

很多小伙伴们会有个疑问,Python中为什么不支持Switch语句?是啊,为什么Python不支持Switch语句,那么小编就通过这篇文章来告诉大家原因 。

Python为什么不支持switch语句?看完你就知道了

文章插图
主要是因为 switch 在其它语言中太常见了,而 Python 却不支持,这样的独特性本身就值得关注,而回答这个问题,也能更加看清 Python 在程序设计上的理念,了解 Python 在语法设计中的决策过程 。
一般而言,switch 的语法格式如下:
【Python为什么不支持switch语句?看完你就知道了】switch(expression){    case value1:       // 语句       break; // 可选    case value2:       // 语句       break; // 可选    default: // 可选       // 语句}复制代码       】
Python 为什么不支持 switch?有一篇 文档中的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 中!

    推荐阅读