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