Python 3.10から導入された新機能の一つに、構造的パターンマッチングがあります。これは、match
とcase
を使用した新しい構文で、値やデータ構造のパターンに基づいて処理を分岐させることができます。
# 基本的な使用例
a:int = 2
match a:
case 1:
print("this is 1")
case 3:
print("this is 3")
case _:
print("Other") # Other
この例では、match
文の後に評価したい変数a
を指定し、その後にcase
文を列挙しています。case
文の後には、マッチさせたいパターンを記述します。このパターンがa
の値と一致すれば、そのcase
文の後の処理が実行されます。case _:
はワイルドカードパターンで、どのcase
文にもマッチしなかった場合に実行されます。
また、case
文ではデータ型の判定も可能で、以下のように書くことができます。
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のcase
文は非常に強力で、柔軟な条件分岐を実現することができます。ただし、case
文は必ずマッチするため、複数あるcase
の最後に置く必要があります。また、case
文でデータ型を判定したい場合にはclass(x)
のように書くことができます。
以上、Python 3.10の新機能である構造的パターンマッチングとcase
文について簡単に説明しました。この機能を理解し、適切に活用することで、よりPythonicなコードを書くことができるでしょう。