Python 3.10から、新たな構文が導入されました。それはmatchcaseを使用するパターンマッチングです。

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

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

match value:
    case 1:
        print("It's 1")
    case _:
        print("It's not 1")

上記の例では、valueが1であれば”It’s 1″を出力し、それ以外の場合は”It’s not 1″を出力します。

しかし、注意点として、match文はif文と異なり、条件式に対応できないという落とし穴があります。そのため、if文と同じように、for文と組み合わせて使うことが多いです。

for i in list:
    match i:
        case i if i % 2 ==0:
            print(f"{i} is even")
        case i if i % 3 ==0:
            print(f"{i} is a multiple of 3")
        case _:
            print(f"{i} is neither even nor a multiple of 3")

上記の例では、リストの各要素iに対して、iが2の倍数であれば”{i} is even”を出力し、2の倍数でなく3の倍数であれば”{i} is a multiple of 3″を出力し、それ以外の場合は”{i} is neither even nor a multiple of 3″を出力します。

このように、Python 3.10のmatch文は、コードの可読性を向上させ、よりPythonicなコードを書くのに役立つ強力な機能です。

投稿者 admin

コメントを残す

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