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の多分岐実現内容については、以前の文章を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。