Python match...case 文
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:
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") #出力:他のケースにマッチしました
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") # 出力: 他の図形にマッチしました
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 条件分岐