はじめに
この実験では、Python 3.10 で導入された新しい Python の Switch Case 文(構造パターンマッチングとも呼ばれます)を使う方法を学びます。Switch Case 文を使うことで、従来のif-elif-else文と比較して、パターンをより簡単かつ読みやすくマッチさせることができます。
到達目標
- Switch Case 文
- if 文
この実験では、Python 3.10 で導入された新しい Python の Switch Case 文(構造パターンマッチングとも呼ばれます)を使う方法を学びます。Switch Case 文を使うことで、従来のif-elif-else文と比較して、パターンをより簡単かつ読みやすくマッチさせることができます。
Python の Switch Case 文の例に入る前に、従来のif-elif-else文と比較してみましょう。
次の HTTP レスポンスコードをマッチさせる例を考えてみましょう。
response_code = 200
if response_code == 200:
print("OK")
elif response_code == 404:
print("404 Not Found")
elif response_code == 500:
print("Internal Server Error")
同じ例を Python の Switch Case 文を使って次のように書き直すことができます。
response_code = 201
match response_code:
case 200:
print("OK")
case 404:
print("404 Not Found")
case 500:
print("Internal Server Error")
ご覧の通り、Python の Switch Case 文はif-elif-else文と比較して、より簡潔で読みやすいです。
ここに switch case 文の構文を示します。
match term:
case pattern-1:
action-1
case pattern-2:
action-2
case pattern-3:
action-3
case _:
action-default
termはパターンと照合したい値です。パターンは単一の値、タプル、リスト、組み込みクラス、またはor演算子 (|) を使ったこれらの組み合わせです。_は任意の値とマッチする全て受け取るパターンです。
この例では、パイプ文字 (| または or) が Python に 2 つ以上のケースに対して同じ応答を返すように許可します。
response_code = 502
match response_code:
case 200 | 201:
print("OK")
case 500 | 502:
print("Internal Server Error")
これは、response_codeが 500 または 502 のいずれかであるため、「Internal Server Error」と表示されます。
デフォルトケースを定義するためにアンダースコア記号_を使うことができます。次の例を考えてみましょう。
response_code = 800
match response_code:
case 200 or 201:
print("OK")
case 500 or 502:
print("Internal Server Error")
case _:
print("Invalid Code")
この例では、response_codeの値がどのケースにも該当しないため、出力は「Invalid Code」になります。
組み込みクラスに基づいてパターンをマッチさせることもできます。次の例を考えてみましょう。
response_code = ["300"]
match response_code:
case int():
print('response_code is a number')
case str():
print('response_code is a string')
case list():
print('response_code is a list')
case _:
print('response_code is a unknown type')
これは、response_codeがリストであるため、「response_code is a list」と表示されます。
この実験では、Python 3.10 で導入された Python の Switch Case 文を使う方法を学びました。従来のif-elif-else文と比較し、単一の値のマッチング、or パターン、反復可能オブジェクトの長さ、デフォルトケース用のアンダースコア記号、および組み込みクラスのいくつかの例を練習しました。
この実験が楽しめ、新しいことを学べたことを願っています!