カテゴリ: Python 更新日: 2025/07/06

Pythonのmatch文(パターンマッチング)の使い方!switch文の代替

Pythonのmatch文(パターンマッチング)の使い方!switch文の代替
Pythonのmatch文(パターンマッチング)の使い方!switch文の代替

先生と生徒の会話形式で理解しよう

生徒

「PythonでもJavaScriptのswitch文みたいに、条件に応じて処理を切り替えられるものってありますか?」

先生

「はい、Python 3.10以降ではmatch文というパターンマッチングの仕組みが使えます。switch文の代わりになって、とても読みやすく書けますよ。」

生徒

「パターンマッチング?なんだか難しそうです…」

先生

「最初は“match 〇〇”、“case △△”で分岐すると覚えれば大丈夫です。それでは優しく学んでいきましょう!」

-

1. match文とは?switch文との違い

1. match文とは?switch文との違い
1. match文とは?switch文との違い

match文(マッチぶん)は、値やデータの形(パターン)に応じて処理を分ける構文です。Python 3.10から導入され、JavaやJavaScriptのswitch文のような書き方ができます。

switch文と同じように、「変数の値に応じて分岐させる」処理ができますが、match文はもっと強力で、リストや辞書の中身までチェックできます。

2. match文の基本構文

2. match文の基本構文
2. match文の基本構文

まずは簡単な例で書き方を見てみましょう。


value = 2

match value:
    case 1:
        print("1です")
    case 2:
        print("2です")
    case _:
        print("1でも2でもありません")

2です

case _は「どれにも当てはまらないときの処理」で、デフォルトの分岐に使います。

3. 複数の値をまとめてチェック

3. 複数の値をまとめてチェック
3. 複数の値をまとめてチェック

caseにカンマ区切りで複数の値を書くと、いずれかに一致するかどうかをまとめて調べられます。


value = 3

match value:
    case 1 | 2:
        print("1か2です")
    case 3:
        print("3です")
    case _:
        print("それ以外です")

3です

1 | 2で「1または2」という意味になります。

4. リストの中身で分岐する

4. リストの中身で分岐する
4. リストの中身で分岐する

match文はリストの形を見ることもできます。要素が決まった長さや中身かどうかを簡単に分岐できます。


data = [10, 20]

match data:
    case [x, y]:
        print(f"xは{x}で、yは{y}です")
    case _:
        print("他の形です")

xは10で、yは20です

[x, y]で「要素が2つあるリスト」としてマッチしています。

-

5. 辞書(dictionary)でキーと値をチェック

5. 辞書(dictionary)でキーと値をチェック
5. 辞書(dictionary)でキーと値をチェック

辞書の場合もmatch文は役立ちます。キーや値に応じた処理を分けられます。


person = {"name": "太郎", "age": 20}

match person:
    case {"name": n, "age": a}:
        print(f"名前が{n}で、年齢が{a}歳です")
    case _:
        print("予期しないデータです")

名前が太郎で、年齢が20歳です

この例では、辞書のキーと変数n, aに値を代入しています。

6. ワイルドカードと変数代入

6. ワイルドカードと変数代入
6. ワイルドカードと変数代入

case {"age": a}のように、部分パターンだけを見て変数に値を代入できます。_はワイルドカードで「何でもOK」です。


person = {"age": 30}

match person:
    case {"age": age}:
        print(f"年齢は{age}歳です")
    case _:
        print("年齢情報がありません")

年齢は30歳です

7. 応用:ガード条件を使ってより詳細に

7. 応用:ガード条件を使ってより詳細に
7. 応用:ガード条件を使ってより詳細に

caseにif条件をつけることで、より細かく分岐できます。これをガード条件といいます。


value = 15

match value:
    case x if x < 10:
        print("10未満です")
    case x if x < 20:
        print("10以上20未満です")
    case _:
        print("20以上です")

10以上20未満です

8. match文がおすすめの理由

8. match文がおすすめの理由
8. match文がおすすめの理由

match文は**複雑な条件をすっきり書ける**、**リストや辞書などデータ構造で分岐できる**などのメリットがあります。

複数の条件分岐やデータの形に応じてきれいに分岐したいときに、とても便利です。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
Pythonで複数の条件を組み合わせる方法!and・or・notの使い方
Pythonの例外処理(try-except)の基本と応用!エラーハンドリング完全ガイド
Pythonの三項演算子とは?一行で条件分岐を記述する方法
Pythonのmatch文(パターンマッチング)の使い方!switch文の代替
人気記事
No.1
Java&Spring記事人気No1
PHP のセッションの有効期限を設定する方法(session_set_cookie_params)
No.2
Java&Spring記事人気No2
PHP の関数のスコープを完全解説!ローカル変数とグローバル変数の違いとは?
No.3
Java&Spring記事人気No3
PHPの関数(function)の基本を完全ガイド!初心者でもわかる使い方
No.4
Java&Spring記事人気No4
PHP の XSS(クロスサイトスクリプティング)対策を完全解説!初心者向けガイド
-