python switchは多枝選択機能を実現します。



何日間ぐらい遊んだことがあると信じています。pythonにはswitchのキーワードがありません。なぜですか?
公式見解によると、PEP 3103-A Switch/Case Sttement.
switch caseを実現するために必要な変数は、ハッシュと比較可能であり、これはpythonが提唱する柔軟性と競合する。実現の上で最適化はしにくいですが、最後まで最悪の場合はまとめてif elseグループと同じですので、pythonはサポートしていません。
しかし、switchのキーワードがないと、類似の効果が得られないという意味ではなく、次はいくつかの小さなプログラムでこのような問題を説明します。
if else判断
私たちは最もよく使われているif elseの判断でコードの一部を実現します。

def matching_if(type):
 if type == 0:
  return '  1  '
 elif type == 1:
  return '  10  '
 elif type == 2:
  return '  100  '
 return '   '

if __name__ == '__main__':
 print(matching_if(1))
 print(matching_if(999))
実行結果は以下の通りです。
''
印刷出力:
    10元割引します
    割引なし
''
dict辞書
辞書を使ってswitch caseを実現することができます。この方法は維持しやすく、同時にコード量を減らすこともできます。辞書シミュレーションを使ったswitch caseの実現です。

def matching_dict(type):
 types = {
  0: '  1  ',
  1: '  10  ',
  2: '  100  '
 }
 return types.get(type, '   ')

if __name__ == '__main__':
 print(matching_dict(1))
 print(matching_dict(999))
コードは全体的に見て簡潔になりましたが、他の方法がありますか?
関数判定
関数の判断はコードの数から言えば優勢ではなく、利点はその柔軟性にあります。もし異なるタイプによって大量に操作すれば、関数演算はきっと最適な方式です。

def one():
 return '  1  '

def two():
 return '  10  '

def three():
 return '  100  '

def default():
 return '   '
def matching_method(type):
 types = {
  0: one,
  1: two,
  2: three
 }
 method = types.get(type, default)
 return method()

if __name__ == '__main__':
 print(matching_method(1))
 print(matching_method(999))
優雅なコードはプログラマの追求の一つで、著者本人もある程度のコード潔癖症があります。このような応用に関しては、第二のdict辞書の種類を選んで応用します。
ラボンダ関数
ここではlamdaとdict辞書を組み合わせる方式を紹介します。演算条件に対してより正確な計算ができます。

def matching_lambda(type):
 matching_dict = lambda x: {
  x == 0: '  1  ',
  x == 1: '  10  ',
  x == 2: '  100  '
 }
 return matching_dict(type)[True]
if __name__ == '__main__':
 print(matching_lambda(1))
 print(matching_lambda(2))
話を結ぶ
作者のレベルが限られていますので、文章の中の間違ったところを指摘してください。ありがとうございます。🙏
ここでは、python switchについて、多分岐選択機能を実現した文章を紹介します。python switchの多分岐実現内容については、以前の文章を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。