2017-10-12 86 views
6

我是Python的新手。 請解釋爲什麼python沒有開關櫃?爲什麼Python沒有開關櫃?

謝謝你這麼多

+2

他們不是非常有幫助。堅持用'if ... elif'而不是'switch'更安全。如果你不小心,它們會導致可怕的錯誤。 – Unni

+0

有關解決方法,您可以參考[在Python中是否對開關/用例實現有任何價值?](https://stackoverflow.com/q/5440990/6521116) –

回答

18

我們認爲,在一個點上,但無需一個方法來聲明命名常量,是沒有辦法來產生一個有效的跳轉表。所以我們只剩下一些語法糖,用於我們已經可以用if-elif-elif-else鏈進行的操作。

請參閱PEP 275PEP 3103進行全面討論。

大致的原因是,各種建議未能滿足人們對開關櫃的要求的期望,他們未能改進現有的解決方案(如基於字典的調度,if-elif-chains,getattr-基於分派的分派或將老式的多態派送到具有相同方法的不同實現的對象)。

+2

案例1:'非常穩定,但沒有*名爲*常量,你必須在任何地方使用幻數,而且我們不需要一個鼓勵幻數的語法結構。 – user2357112

0

即使Java,C++C#支持他們,我從來沒有使用switch statements因爲我可以用鏈式if語句完成相同的工作。

+2

不回答問題... – qwr

+0

儘管它沒有回答問題1:1,但它是一個強有力的陳述,可以用作衡量它是否過時或不存在的度量。你有沒有遇到過這種情況,你在尋找一個「switch」聲明? – user1767754

+0

因爲你從不需要性能問題(noob):( –

1
def f(x): 
    return { 
     1 : 'output for case 1', 
     2 : 'output for case 2', 
     3 : 'output for case 3' 
    }.get(x, 'default case') 

您可以在Python中使用此作爲開關的情況下,如果條件不匹配,它將返回默認狀態下,如果不匹配