MENU

Pythonではswith-case文ではなくmatch-case文を使おう

プログラミング言語には、条件分岐を行うための構文がいくつか存在します。

その中で、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文でそれぞれの値に対応する処理を記述しています。

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を使っている場合は注意が必要です。

1 2
目次から探す