Python 3.10から導入された新機能、match
文について解説します。match
文は、if
文のような使い方ができますが、より多機能で、複数のパターンと値を比較する場合に特に便利です。
match文とは
match
文は、Python 3.10で新たに導入された構文で、値を複数のパターンと比較することができます。具体的な使い方は以下の通りです。
match 変数:
case パターン1:
return 返り値1
case パターン2:
return 返り値2
case _:
return 例外処理
上記のように書いたとき、変数がパターン1であれば返り値1、パターン2であれば返り値2、それ以外の値であれば例外処理の結果が返ってきます。
match文の使い方
以下に、if
文とmatch
文の使い方を比較した例を示します。
if文による処理
まずは一般的なif
文を見てみましょう。ここでは数字を2の倍数、3の倍数、それ以外の順番に別々のリストに格納していくコードを記述します。
list = [1, 2, 3, 4, 5, 6, 8, 10, 11, 13, 15, 17, 19, 20, 22, 23]
list_mult2 = []
list_mult3 = []
list_others = []
for i in list:
# 2 の倍数を格納
if i % 2 == 0:
list_mult2.append(i)
# 3 の倍数を格納
elif i % 3 == 0:
list_mult3.append(i)
# それ以外を格納
else:
list_others.append(i)
match文による処理
次に、実際にmatch
文を使ってif
文を書き換えてみましょう。サンプルコードは以下の通りです。
list = [1, 2, 3, 4, 5, 6, 8, 10, 11, 13, 15, 17, 19, 20, 22, 23]
list_mult2 = []
list_mult3 = []
list_others = []
for i in list:
match i:
# 2 の倍数を格納
case i if i % 2 == 0:
list_mult2.append(i)
# 3 の倍数を格納
case i if i % 3 == 0:
list_mult3.append(i)
# その他
case _:
list_others.append(i)
このようにmatch
文を使うと、if
文よりもコードが読みやすくなります。
注意点
match
文を使う際には、以下の点に注意が必要です。
match
文のパターンには、計算処理を入れることはできません。例えば、i + 1
といった処理を入れることはできません。match
文は必ずマッチするため、複数あるcase
の最後に置く必要があります。つまり、match
文よりも後に他のcase
を書くことはできません。
以上、Pythonのmatch
文の使い方について解説しました。この新機能をうまく使いこなすことで、よりPythonicなコードを書くことができます。ぜひ活用してみてください。