Python 3.10では、新たな構文としてパターンマッチング構文(match case)が導入されました。この構文は、値に応じた処理の分岐を行うためのもので、条件分岐が厳密に定められることや、条件が入れ子になってしまった場合にもスッキリとまとまることが特徴です。
構造的パターンマッチングとは
構造的パターンマッチングは、Python 3.10で新たに導入された構文で、2つのキーワードmatch
とcase
を使用します。
match value:
case 1:
...
case _:
...
単純な値での分岐の他に、データ構造やアトリビュートのパターンでの分岐なども可能となっています。
パターンマッチングがサポートするパターン
パターンマッチングは数多くのパターンをサポートしています。以下にいくつかのパターンを紹介します。
リテラルパターン
case
の後ろにリテラルを記述するパターンです。このパターンでは単純に値が一致するかどうかでマッチングを行います。
number = 10
match number:
case 0:
raise Exception('失敗')
case 10:
print('成功')
case _:
raise Exception('失敗')
キャプチャパターン
case
の後ろにPythonで有効な名前を記述するパターンです。
value = 3.14
match value:
case 3:
raise Exception('失敗')
case 3.1415:
raise Exception('失敗')
case x:
assert x == 3.14
print('成功')
ワイルドカードパターン
case
の後ろに_
を記述するパターンです。
message = 'こんにちは'
match message:
case 'おはよう':
raise Exception('失敗')
case _:
print('成功')
まとめ
Python 3.10のパターンマッチング構文は、条件分岐をより明確に、より簡潔に書くことができる強力な機能です。この機能を理解し、うまく活用することで、Pythonicなコードを書くのに役立つでしょう。