Python 3.10では、新たな構文であるパターンマッチングが導入されました。この機能は、match
とcase
の2つのキーワードを使用します。
match value:
case 1:
...
case _:
...
この構文は、単純な値の分岐だけでなく、データ構造やアトリビュートのパターンでの分岐も可能となっています。見た目は他のオブジェクト指向型の言語によくあるswitch case
に似ていますが、関数型言語のパターンマッチングに近いイメージで捉えるのが適しています。
パターンマッチングは、以下のような多くのパターンをサポートしています:
- リテラルパターン
- キャプチャパターン
- ワイルドカードパターン
- バリューパターン
- シーケンスパターン
- マッピングパターン
- if ガード
- クラスパターン
- as での束縛
これらのパターンを理解し、適切に活用することで、よりPythonicなコードを書くことが可能となります。
# リテラルパターンの例
number = 10
match number:
case 0:
raise Exception('失敗')
case 10:
print('成功')
case _:
raise Exception('失敗')
このように、Pythonのパターンマッチングは非常に強力な機能であり、その使い方を理解することで、より効率的なコードを書くことが可能となります。