プログラミング言語には、条件分岐を行うための構文がいくつか存在します。
その中で、Pythonでは長らくcase文が存在しないことが特徴的でした。
しかし、Python 3.10から新たにmatch-case文が導入され、より柔軟な条件分岐が可能になりました。
本記事では、Pythonとcase文の関係や、新たに登場したmatch-case文の使い方、応用例をわかりやすく解説します。
Pythonとcase文の関係
Pythonは多くのプログラミング言語と比較して、独自の文法や機能があります。
そのため、他の言語で一般的に使われる機能がPythonには存在しないことがあります。
その一つが、長らくPythonには存在しなかったcase文です。
Pythonにはcase文がなかった
多くのプログラミング言語では、switch
文やcase
文といった機能が提供されており、これらを使って条件分岐を行うことができます。
しかし、Pythonではこれらの機能が長らく存在していませんでした。
その代わり、Pythonではif
文やelif
文を使って条件分岐を行っていました。
例えば、以下のようなコードで条件分岐を行うことができます。
value = 2
if value == 1:
print("値は1です")
elif value == 2:
print("値は2です")
elif value == 3:
print("値は3です")
else:
print("値は1, 2, 3以外です")
このコードでは、value
の値に応じて異なるメッセージを表示しています。
しかし、この方法では条件が多くなるとコードが冗長になりがちであり、switch
文やcase
文があればもっとシンプルに書けることがあります。
match-case文の登場
Python 3.10から、Pythonでもmatch
文とcase
文が導入されました。
これにより、よりシンプルで直感的な条件分岐が可能になりました。
以下に、先ほどの例をmatch
文とcase
文を使って書き直した例を示します。
value = 2
match value:
case 1:
print("値は1です")
case 2:
print("値は2です")
case 3:
print("値は3です")
case _:
print("値は1, 2, 3以外です")
このコードでは、match
文の後に条件となる変数を指定し、case
文でそれぞれの値に対応する処理を記述しています。
このように、Python 3.10からはmatch
文とcase
文を使って、よりシンプルで直感的な条件分岐が可能になりました。
ただし、現在でもPython 3.9以前のバージョンが使われているため、まだmatch
文とcase
文が使えない状況もあります。
そのため、状況に応じてif
文やelif
文を使った条件分岐も覚えておくことが重要です。
match-case文の使い方
Python 3.10から導入されたmatch-case文は、他のプログラミング言語でいうところのswitch-case文に似た機能を提供します。
match-case文を使うことで、複数の条件に基づいて処理を分岐させることができます。
ここでは、match-case文の基本的な使い方をサンプルコードとともに解説します。
基本的な構文
match-case文の基本的な構文は以下のようになります。
match 対象の変数:
case パターン1:
処理1
case パターン2:
処理2
...
case パターンN:
処理N
case _:
それ以外の場合の処理
それでは、実際にmatch-case文を使ったサンプルコードを見てみましょう。
animal = "犬"
match animal:
case "犬":
print("わんわん")
case "猫":
print("にゃーん")
case "鳥":
print("ぴよぴよ")
case _:
print("その他の動物")
このコードでは、animal
という変数に代入された文字列に応じて、異なる動物の鳴き声を表示しています。
実行結果は以下のようになります。
わんわん
パターンマッチング
match-case文の強力な機能の1つに、パターンマッチングがあります。
これにより、リストや辞書などのデータ構造に対しても簡単に条件分岐を行うことができます。
例えば、次のようなリストがあるとします。
data = ["apple", 3]
このリストの要素に応じて処理を分岐させるには、以下のようにmatch-case文を使います。
data = ["apple", 3]
match data:
case ["apple", int(num)]:
print(f"リンゴが{num}個")
case ["banana", int(num)]:
print(f"バナナが{num}個")
case _:
print("その他のデータ")
実行結果は以下のようになります。
リンゴが3個
このように、match-case文を使うことで、Pythonプログラムの条件分岐を簡潔かつ柔軟に記述することができます。
ただし、match-case文はPython 3.10以降でのみ利用可能なので、古いバージョンのPythonを使っている場合は注意が必要です。