Python 3.10では、新たな構文である構造的パターンマッチングが導入されました。この機能は、match
とcase
の2つのキーワードを使用します。
match value:
case 1:
...
case _:
...
この構文は、単純な値での分岐の他に、データ構造やアトリビュートのパターンでの分岐も可能となっています。見た目は他のオブジェクト指向型の言語によくあるswitch case
に似ていますが、どちらかというと関数型言語のパターンマッチングに近いイメージで捉えるのがよさそうです。
以下に、Pythonのmatch case
を使用した型判定の例を示します。
values = [1, "hello", True]
for v in values:
match v:
case str():
print("It is a string!")
case bool():
print("It is a boolean!")
case int():
print("It is an integer!")
case _:
print(f"It is a {type(v)}!")
この例では、match v:
として直接値v
に対してマッチングを行っています。str()
, bool()
, int()
といった形で型を指定しています。これはクラスパターンマッチと呼ばれるもので、True
がint
のインスタンスであることによる問題を避けるために、bool()
とint()
の順序を入れ替えています。
以上がPython 3.10の構造的パターンマッチングの基本的な使い方となります。この新機能を理解し、Pythonicなコードを書くのに役立ててください。