『壹』 為什麼Python中沒有Switch/Case語句
官方的解釋說,「用if… elif… elif… else序列很容易來實現 switch / case 語句」。而且可以使用函數字典映射和類的調度方法。
可以說官方的說明並沒有解釋什麼,只是給出了解決方案。換句話說,沒有回答為什麼。我認為其實官方真正想說的是:「Python 不需要 switch / case 語句」。
『貳』 為什麼Python中沒有Switch/Case語句
同於我用過的其它編程語言,Python 沒有 switch / case 語句。為了實現它,我們可以使用字典映射:
這段代碼類似於:
Python 代碼通常比處理 case 的標准方法更為簡短,也可以說它更難理解。當我初次使用 Python 時,感覺很奇怪並且心煩意亂。而隨著時間的推移,在 switch 中使用字典的 key 來做標識符變得越來越習以為常。
函數的字典映射
在 Python 中字典映射也可以包含函數或者 lambda 表達式:
雖然zero和one中的代碼很簡單,但是很多 Python 程序使用這樣的字典映射來調度復雜的流程。
類的調度方法
如果在一個類中,不確定要使用哪種方法,可以用一個調度方法在運行的時候來確定。
官方說明
官方文檔的解釋說,「用if... elif... elif... else序列很容易來實現 switch / case 語句」。而且可以使用函數字典映射和類的調度方法。