Python 3.10では、新たな構文である構造的パターンマッチングが導入されました。これは、matchcaseを使用する構文で、単純な値での分岐だけでなく、データ構造やアトリビュートのパターンでの分岐も可能となっています。

a:int = 2
match a:
    case 1:
        print("this is 1")
    case 3:
        print("this is 3")
    case _:
        print("Other")  # Other

この新機能は、他のオブジェクト指向型の言語によくあるswitch caseに似ていますが、関数型言語のパターンマッチングに近いイメージで捉えるのがよさそうです。

また、Python 3.10以前でも同じことは可能でしたが、caseの方が可読性が高いというのが導入理由でした。

# pattern1
if a == 1:
    print("this is 1")
elif a == 3:
    print("this is 3")
else:
    print("Other")

# patern2
cases = { 1:"this is 1", 3:"this is 3" }
print(cases[a] if a in cases.keys() else "Others")

この新機能を活用することで、よりPythonicなコードを書くことが可能となります。ぜひ、Python 3.10の新機能を試してみてください。

投稿者 admin

コメントを残す

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