回答
我们认为,在一个点上,但无需一个方法来声明命名常量,是没有办法来产生一个有效的跳转表。所以我们只剩下一些语法糖,用于我们已经可以用if-elif-elif-else链进行的操作。
大致的原因是,各种建议未能满足人们对开关柜的要求的期望,他们未能改进现有的解决方案(如基于字典的调度,if-elif-chains,getattr-基于分派的分派或将老式的多态派送到具有相同方法的不同实现的对象)。
案例1:'非常稳定,但没有*名为*常量,你必须在任何地方使用幻数,而且我们不需要一个鼓励幻数的语法结构。 – user2357112
文档中的字面上有一段可以回答这个问题。请看下图:
Why isn’t there a switch or case statement in Python?
TL; DR:现有方案(通过getattr
或dict.get
动态调度,if
/elif
链)覆盖所有的使用情况就好了。
即使Java
,C++
C#
支持他们,我从来没有使用switch statements
因为我可以用链式if语句完成相同的工作。
不回答问题... – qwr
尽管它没有回答问题1:1,但它是一个强有力的陈述,可以用作衡量它是否过时或不存在的度量。你有没有遇到过这种情况,你在寻找一个“switch”声明? – user1767754
因为你从不需要性能问题(noob):( –
def f(x):
return {
1 : 'output for case 1',
2 : 'output for case 2',
3 : 'output for case 3'
}.get(x, 'default case')
您可以在Python中使用此作为开关的情况下,如果条件不匹配,它将返回默认状态下,如果不匹配
- 1. 0在开关柜中?
- 2. 是没有打破坏习惯的开关柜?
- 3. 为什么开始没有项目执行相关的项目
- 4. 赢CMD:有没有侧柜
- 5. 为什么WPF窗口没有打开
- 6. Python - 为什么我的Tkinter窗口没有关闭self.destroy?
- 7. 为什么我的柜台不算?
- 8. 为什么没有关闭Z
- 9. 为什么windows窗体没有关闭
- 10. Winform没有关闭为什么?
- 11. 为什么Python没有颜色输出?
- 12. Python:为什么变量没有更新?
- 13. 为什么Python中没有uuid.uuid2?
- 14. python中的所有对象,但为什么没有关键字作为对象?
- 15. 开关柜的最大实施?
- 16. 开关柜外的变量java
- 17. 开关柜中的代码优化.NET
- 18. 开关柜式扫描仪Java问题
- 19. 一个开关柜中的两个值
- 20. ECMAscript中的开关柜性能
- 21. 开关柜中的变量范围
- 22. Python 3和开源:有没有什么好的项目?
- 23. 为什么Me.components什么都没有?
- 24. PHP开关内部用户函数输出什么都没有
- 25. 为什么没有uniform_distribution?
- 26. 为什么没有asyncContext.cancel()
- 27. 为什么c#没有union?
- 28. 为什么没有String#shift()?
- 29. 没有屎树,为什么?
- 30. 为什么没有foreignAutoDelete?
他们不是非常有帮助。坚持用'if ... elif'而不是'switch'更安全。如果你不小心,它们会导致可怕的错误。 – Unni
有关解决方法,您可以参考[在Python中是否对开关/用例实现有任何价值?](https://stackoverflow.com/q/5440990/6521116) –