Python 3.10では、新たな構文であるmatch-case
が導入されました。この構文は、値に応じた処理の分岐を行うためのもので、条件分岐が厳密に定められることや、条件が入れ子になってしまった場合にもスッキリとまとまることが特徴です。
構造的パターンマッチング
match-case
文は、Pythonの構造的パターンマッチングの一部として導入されました。この構文は、単純な値での分岐の他に、データ構造やアトリビュートのパターンでの分岐も可能となっています。
match value:
case 1:
...
case _:
...
上記の例では、match
文の後に続くvalue
が1
であれば最初のcase
文が実行され、それ以外の場合はcase _:
が実行されます。
パターンの種類
match-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の新機能であるmatch-case
文について簡単に説明しました。この機能を使うことで、より複雑な条件分岐をスマートに書くことができます。