Pythonのmatch文:パターンマッチングによる条件分岐

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歳以上です。」というメッセージが表示されます。

タイトルとURLをコピーしました