Python 3.10から導入されたmatch文(ケース文)は、複数のパターンを効率的に比較し、適切な処理を実行するための構文です。これは、他のプログラミング言語のswitch-case文に似ていますが、Pythonのmatch文はより強力で柔軟なパターンマッチングをサポートします。
基本構文
Pythonのmatch
文は、変数の値に基づいて実行されるコードブロックを選択するために使用します。基本的な構文は次のとおりです:
match 変数:
case 値1:
実行するコード1
case 値2:
実行するコード2
case _:
条件に一致しない場合に実行するコード
基本的な使用例
以下は、数値に基づいて異なるメッセージを表示する基本的なmatch
文の例です。
day = 3
match day:
case 1:
print("今日は月曜日です。")
case 2:
print("今日は火曜日です。")
case 3:
print("今日は水曜日です。")
case 4:
print("今日は木曜日です。")
case 5:
print("今日は金曜日です。")
case 6:
print("今日は土曜日です。")
case 7:
print("今日は日曜日です。")
case _:
print("無効な日です。")
今日は水曜日です。
この例では、変数day
の値に基づいて対応する曜日を表示します。もしday
が1から7の範囲外であれば、「無効な日です。」というメッセージが表示されます。
複数の値にマッチ
複数の値に対して同じ処理を行いたい場合は、ケースをカンマで区切ることができます。
fruit = "apple"
match fruit:
case "apple" | "banana" | "cherry":
print("これは一般的な果物です。")
case "kiwi" | "mango":
print("これはトロピカルフルーツです。")
case _:
print("これは知らない果物です。")
これは一般的な果物です。
この例では、変数fruit
の値が「apple」、「banana」、または「cherry」の場合、「これは一般的な果物です。」というメッセージが表示されます。
パターンマッチング
match
文では、複雑なパターンマッチングもサポートされています。例えば、辞書の構造に基づいて異なる処理を行うことができます。
person = {"name": "Alice", "age": 30}
match person:
case {"name": "Alice", "age": age} if age >= 30:
print("Aliceは30歳以上です。")
case {"name": "Bob", "age": age} if age < 30:
print("Bobは30歳未満です。")
case _:
print("一致するパターンがありません。")
liceは30歳以上です。
この例では、person
辞書の内容に基づいて特定のメッセージを表示します。もしname
が”Alice”でage
が30以上の場合、「Aliceは30歳以上です。」というメッセージが表示されます。