回答
我們認爲,在一個點上,但無需一個方法來聲明命名常量,是沒有辦法來產生一個有效的跳轉表。所以我們只剩下一些語法糖,用於我們已經可以用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. 開關櫃實現
- 2. 沒有關閉Python中的打開文件有什麼後果?
- 3. 0在開關櫃中?
- 4. 是沒有打破壞習慣的開關櫃?
- 5. 爲什麼開始沒有項目執行相關的項目
- 6. 爲什麼WPF窗口沒有打開
- 7. 爲什麼櫃檯不斷重置?
- 8. 爲什麼我的櫃檯不工作?
- 9. 爲什麼我的櫃檯不算?
- 10. 贏CMD:有沒有側櫃
- 11. Python - 爲什麼我的Tkinter窗口沒有關閉self.destroy?
- 12. sqlalchemy,爲什麼沒有建立關係
- 13. Winform沒有關閉爲什麼?
- 14. 爲什麼沒有關閉Z
- 15. 爲什麼windows窗體沒有關閉
- 16. Python:爲什麼變量沒有更新?
- 17. 爲什麼python string split()沒有分裂
- 18. 爲什麼Python沒有顏色輸出?
- 19. 爲什麼Python中沒有uuid.uuid2?
- 20. 爲什麼Python中沒有len(文件)?
- 21. 爲什麼功能沒有定義python
- 22. python中的所有對象,但爲什麼沒有關鍵字作爲對象?
- 23. Imagick爲什麼打開開關backgroundcolor?
- 24. 爲什麼在打印第一個情況後開關盒沒有斷開?
- 25. 開關櫃中的變量範圍
- 26. 開關櫃的最大實施?
- 27. 開關櫃式掃描儀Java問題
- 28. 開關櫃外的變量java
- 29. 開關櫃中的代碼優化.NET
- 30. 開關櫃內的功能條件
他們不是非常有幫助。堅持用'if ... elif'而不是'switch'更安全。如果你不小心,它們會導致可怕的錯誤。 – Unni
有關解決方法,您可以參考[在Python中是否對開關/用例實現有任何價值?](https://stackoverflow.com/q/5440990/6521116) –