Python 3.10では、新たな構文である構造的パターンマッチングが導入されました。この機能は、matchcaseの2つのキーワードを使用します。

match value:
    case 1:
        ...
    case _:
        ...

この構文は、単純な値での分岐の他に、データ構造やアトリビュートのパターンでの分岐も可能となっています。見た目は他のオブジェクト指向型の言語によくあるswitch caseに似ていますが、どちらかというと関数型言語のパターンマッチングに近いイメージで捉えるのがよさそうです。

以下に、Pythonのmatch caseを使用した型判定の例を示します。

values = [1, "hello", True]
for v in values:
    match v:
        case str():
            print("It is a string!")
        case bool():
            print("It is a boolean!")
        case int():
            print("It is an integer!")
        case _:
            print(f"It is a {type(v)}!")

この例では、match v:として直接値vに対してマッチングを行っています。str(), bool(), int()といった形で型を指定しています。これはクラスパターンマッチと呼ばれるもので、Trueintのインスタンスであることによる問題を避けるために、bool()int()の順序を入れ替えています。

以上がPython 3.10の構造的パターンマッチングの基本的な使い方となります。この新機能を理解し、Pythonicなコードを書くのに役立ててください。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です