优草派  >   Python

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

陈立鑫            来源:优草派

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

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

主要是因为 switch 在其它语言中太常见了,而 Python 却不支持,这样的独特性本身就值得关注,而回答这个问题,也能更加看清 Python 在程序设计上的理念,了解 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 中!

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行