Python match...case 文

Python3 条件控制Python3 条件分岐

match...caseより強力なパターンマッチング方法を提供します。

パターンマッチングは、プログラミングにおいてデータ構造を処理する方法の一つであり、コードをより簡潔で読みやすくすることができます。

match...casePython 3.10 で導入された新しい構文です。

match...case構文は次のとおりです:

match expression:
    case pattern1:
        # 处理pattern1的逻辑
    case pattern2 if condition:
        # 处理pattern2并且满足condition的逻辑
    case _:
        # 处理其他情况的逻辑

パラメータの説明:

  • match文の後には式を置き、次にcase文を使用してさまざまなパターンを定義します。
  • case後にはパターンを置きます。具体的な値、変数、ワイルドカードなどが指定できます。
  • 使用できますifキーワードでcase中に条件を追加します。
  • _通常はワイルドカードとして使用され、任意の値にマッチします。

例

1. 単純な値のマッチング

例

def match_example(value):
    match value:
        case 1:
            print(値が1にマッチしました)
        case 2:
            print(値が2にマッチしました)
        case _:
            print(他の値にマッチしました)

match_example(1)  # 出力: 値が1にマッチしました
match_example(2)  # 出力: 値が2にマッチしました
match_example(3)  # 出力: 他の値にマッチしました

上記のコードでは、match文はマッチングに使用され、valueのさまざまなケースを、それぞれのcase文は、1つの可能なマッチングケースを表します。_ワイルドカードは他のケースを表します。

出力結果は次のとおりです:

匹配到值为1
匹配到值为2
匹配到其他值

2. 変数を使用する

例

def match_example(item):
    match item:
        case (x, y) if x == y:
            print(f等しいタプルにマッチしました: {item})
        case (x, y):
            print(fタプルにマッチしました: {item})
        case _:
            print(他のケースにマッチしました)

match_example((1, 1))  #出力:等しいタプルにマッチしました: (1, 1)
match_example((1, 2))  #出力:タプルにマッチしました: (1, 2)
match_example("other") #出力:他のケースにマッチしました

出力結果は次のとおりです:

匹配到相等的元组: (1, 1)
匹配到元组: (1, 2)
匹配到其他情况

3. 型マッチング

例

class Circle:
    def __init__(self, radius):
        self.radius = radius

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height

def match_shape(shape):
    match shape:
        case Circle(radius=1):
            print(半径1の円にマッチしました)
        case Rectangle(width=1, height=2):
            print(幅1、高さ2の長方形にマッチしました)
        case _:
            print(他の図形にマッチしました)

match_shape(Circle(radius=1))          # 出力: 半径1の円にマッチしました
match_shape(Rectangle(width=1, height=2)) # 出力: 幅1、高さ2の長方形にマッチしました
match_shape("other")                    # 出力: 他の図形にマッチしました

出力結果は次のとおりです:

匹配到半径为1的圆
匹配到宽度为1,高度为2的矩形
匹配到其他形状

Python3 条件控制Python3 条件分岐

その他の拡張