Python 3.10では、新たな構文として構造的パターンマッチングが導入されました。これは、match
とcase
の2つのキーワードを使用します。
match value:
case 1:
...
case _:
...
この構文は、単純な値での分岐の他に、データ構造やアトリビュートのパターンでの分岐なども可能となっています。見た目は他のオブジェクト指向型の言語によくあるswitch case
に似た印象を与えますが、どちらかというと関数型言語のパターンマッチングに近いイメージで捉えるのがよさそうです。
また、case
文にはif
ガードを使用することも可能です。これにより、より柔軟な条件分岐が可能となります。
match sample:
case int(x) if sample > 0:
print("sample is integer and greater than 0")
case str(x) if sample == "hello":
print("sample is string and 'hello'")
case int(x):
print("sample is integer")
case str(x):
print("sample is string")
case _:
print("other!")
このように、Python 3.10の構造的パターンマッチングは、コードの可読性と柔軟性を高める強力な機能です。正しく理解してうまく活用すれば、よりPythonicなコードを書くのに役立つでしょう。