答えて
をいただき、ありがとうございます私たちは、一点でそれを考えられているが、名前付き定数を宣言する方法を持たずに、効率的なジャンプテーブルを生成する方法はありません。だから私たちが残すことになるのは、if-elif-elif-elseチェーンですでにできることのための構文的砂糖です。
詳しくは、PEP 275およびPEP 3103を参照してください。
大まかに言えば、いろいろな提案が、スイッチのケースについて人々の見解に追いつかず、既存のソリューション(辞書ベースのディスパッチ、if-elifチェーン、getattr-同じメソッドの実装が異なるオブジェクトへの古典的なポリモーフィズムのディスパッチなど)を使用します。
'case 1:'はかなり一定ですが、 *名前付き定数を使用すると、どこでもマジックナンバーを使用する必要があり、マジックナンバーを奨励するシンタックス構造は望ましくありません。 – user2357112
これに答えるために、ドキュメントには文字通りセクションがあります。以下を参照してください:
Why isn’t there a switch or case statement in Python?
TL; DR:既存の選択肢(getattr
またはdict.get
経由で動的ディスパッチ、if
/elif
チェーンは)うまくすべてのユースケースをカバーしています。私はif文連鎖で行わ同じ仕事を得ることができるよう
はにもかかわらずJava
は、C++
は、C#
サポートの彼らは、私がswitch statements
を使用したことがありません。
質問に答えることはできません... – 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. なぜJavaのswitchcase文がこのように機能するのですか?
- 2. Pythonマルチプロセッシングパイプが安全でないのはなぜですか?
- 3. なぜPythonは({])が{}と等しくないのですか?
- 4. なぜpythonインスタンスに__name__属性がないのですか?
- 5. なぜPythonにネイティブリンクリスト実装がないのですか?
- 6. なぜPythonにガベージコレクタスレッドがないのですか?
- 7. python-requestがlocalhostに遅いのはなぜですか?
- 8. なぜPython 12.76/106が0.1200000000001で、0.12でないのですか?
- 9. なぜINSERT INTOがPythonで動作しないのですか
- 10. なぜ "python"コマンドがvirtualenvで動作しないのですか?
- 11. なぜpythonでpool.mapが動作しないのですか?
- 12. 私のpythonクラスがうまくいかないのはなぜですか?
- 13. virtualenvの下にpython -m siteの出力がないのはなぜですか?
- 14. Pythonでクラスをインポートできないのはなぜですか?
- 15. なぜこのPythonコードが機能しないのですか?
- 16. なぜ以下のpythonが動作しないのですか?
- 17. なぜ私のpythonループが動作しないのですか
- 18. なぜ、Pythonの浮動オブジェクトには分母アトリビュートがないのですか?
- 19. Pythonコンパイラが動作しないのはなぜですか?次のように
- 20. IDLEがPythonプログラムのあるフォルダにないのはなぜですか?
- 21. なぜPythonはゼロインデックス化されていないのですか?
- 22. なぜPythonはストリップされていないのですか?
- 23. Opencv-Pythonでイメージが異なるのはなぜですか?
- 24. Pythonで「finally」節が必要なのはなぜですか?
- 25. Pythonでコルーチンが必要なのはなぜですか?
- 26. ディクショナリがPythonのリストより速いのはなぜですか?
- 27. なぜdf.head()はPythonで動作しないのですか
- 28. なぜ `pyvenv`が` python-config`をインストールしないのですか?
- 29. Python - なぜ+ =演算子が動作しないのですか
- 30. なぜこれが動作しないのですか(Python)
と一致しない場合は、デフォルトを返します。 'if ... elif'を' switch'よりもスティックする方が安全です。あなたが慎重でないと、彼らは恐ろしいバグにつながります。 – Unni
回避策として、[Pythonのスイッチ/ケース実装に何か価値がありますか?](https://stackoverflow.com/q/5440990/6521116) –