pythonにswitch文がないのは、in句を使えばすっきり書けるからであり、またdictionary型(他の言語で言うところのhash)を用いれば、ifを持いずともswitch的な書き方ができるから「いらないじゃん!」ということらしい。
c言語などのswitch(条件分岐)とifを疑問を覚えず両方採用してきた最近のプログラミング言語の方にあまりセンスを感じない。まあ、両方あった方が混乱は少なくないが、両方好きな方を使えるということがベストな選択ではないのかもしれないと思う。そういう意味ではswitchを突っぱね続けているpythonのポリシーは嫌いではない。
ちなみに、if文とswitch文はコンパイルしたときにアルゴリズムが異なる。多分岐の場合は、テーブルジャンプや2分探索を用いて対象の処理を選択するswitch文のほうが高速だ。
PEP 275 複数の値をスイッチング // Switching on Multiple Values
https://www.python.org/dev/peps/pep-0275/
参考文献↓
デザインと歴史 FAQ — Python 3.9.2 ドキュメント
switch 文の構文に関する提案がいくつかありましたが、範囲判定をするべきか、あるいはどのようにするべきかについての合意は (まだ) 得られていません。現在の状況の完全な詳細は PEP 275 を参照してください。
pythonにもswitch文を作ってくださいという意見はあるけれどpython側が突っぱねているらしい。
コメント