この記事では、Python言語におけるパターンマッチングと演算子の関係について深掘りします。具体的なコード例とその解説、応用例を含めています。
目次
パターンマッチングとは
Python 3.10から導入されたパターンマッチングは、データの形や構造を用いて条件分岐を行う機能です。これにより、より簡潔で可読性の高いコードが書けます。
基本的な使い方
match x:
case 0:
print("x is zero")
case 1:
print("x is one")
case _:
print("x is something else")
この基本的な例では、変数`x`が0, 1, またはそれ以外であるかをパターンマッチングで判断しています。
演算子との関係
and演算子
match x:
case 0 and 1:
print("Not possible")
case (1|2) and y:
print(f"x is 1 or 2 and also matches y: {y}")
この例では`and`演算子を用いて、複数の条件を一度に評価しています。
or演算子
match x:
case 0 or 1:
print("x is zero or one")
case 2:
print("x is two")
応用例
応用例1: ネストしたデータ構造
point = (2, 3)
match point:
case (0, 0):
print("Origin")
case (0, y):
print(f"On the y-axis at {y=}")
case (x, 0):
print(f"On the x-axis at {x=}")
case (x, y):
print(f"Arbitrary point at {x=}, {y=}")
この応用例では、タプル`point`の各要素に対してパターンマッチングを行います。
応用例2: 辞書のキーと値
data = {"key": "value"}
match data:
case {"key": str() as value}:
print(f"Found a string value: {value}")
この応用例では、辞書のキーと値にパターンマッチングを行います。
応用例3: クラスの属性
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
p = Point(1, 2)
match p:
case Point(0, 0):
print("Origin")
case Point(x, y):
print(f"Arbitrary point at {x=}, {y=}")
この例では、クラスの属性に対してパターンマッチングを行っています。
まとめ
Pythonのパターンマッチングは、非常に柔軟で強力な機能です。特に演算子と組み合わせることで、複雑な条件でも簡潔にコードを書くことができます。この記事を通じて、基本から応用までのテクニックが理解できたら、是非とも実際のコードで活用してみてください。
コメント