カテゴリ: Python 更新日: 2026/01/07

Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説

Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方

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

生徒

「先生、Pythonにはswitch文ってないんですか?条件によって処理を変えたいときに便利そうなので知りたいです。」

先生

「Pythonにはswitch文は昔はありませんでしたが、最近できたmatch文というものがあります。これがswitch文の代わりに使える新しい書き方です。」

生徒

「match文って何ですか?名前からは何となくわかるけど、具体的にどう使うんですか?」

先生

「簡単に言うと、match文は『値がどのパターンに当てはまるかを調べて、それぞれの処理を行う』ためのものです。初心者でもわかりやすいように、まずはswitch文と比較しながら説明しましょう。」

1. Pythonのmatch文(パターンマッチング)とは?

1. Pythonのmatch文(パターンマッチング)とは?
1. Pythonのmatch文(パターンマッチング)とは?

Pythonのmatch文は、2021年にリリースされたPython 3.10から使えるようになった新しい構文で、「パターンマッチング」と呼ばれます。これは「ある値がどんな形や内容かを調べて、そのパターンごとに処理を分ける」という仕組みです。

簡単に言えば、条件に応じて処理を切り替える方法ですが、今までよく使われてきたif-elif-else文よりも読みやすく書ける場合があります。

パターンマッチングはプログラミング言語によっては「switch文」や「case文」と呼ばれる機能に似ていますが、Pythonではmatch文として独自の形で実装されています。

2. switch文とは?Pythonでの代わりの書き方

2. switch文とは?Pythonでの代わりの書き方
2. switch文とは?Pythonでの代わりの書き方

プログラミング言語によっては「switch文」というものがあり、これは「ある変数の値によって、複数の処理を分ける」ためのものです。たとえば、JavaやC言語、JavaScriptなどにあります。

Pythonでは昔はswitch文がなかったため、代わりにif-elif-elseを使って処理を分けていました。例えば:


fruit = "りんご"

if fruit == "りんご":
    print("赤くて甘い果物です。")
elif fruit == "バナナ":
    print("黄色くて長い果物です。")
elif fruit == "みかん":
    print("オレンジ色でジューシーな果物です。")
else:
    print("知らない果物です。")

この書き方でも問題ありませんが、条件が増えると少し読みづらくなります。そこでPython 3.10からmatch文を使う方法が出てきました。

3. Pythonのmatch文の基本的な使い方

3. Pythonのmatch文の基本的な使い方
3. Pythonのmatch文の基本的な使い方

では、上のif-elif文をmatch文で書き換えてみましょう。


fruit = "りんご"

match fruit:
    case "りんご":
        print("赤くて甘い果物です。")
    case "バナナ":
        print("黄色くて長い果物です。")
    case "みかん":
        print("オレンジ色でジューシーな果物です。")
    case _:
        print("知らない果物です。")

ポイントは以下の通りです:

  • match 変数名: のあとに、case パターン: と書きます。
  • それぞれのcaseの後には、その条件に合ったときに実行する処理を書きます。
  • case _: の「_(アンダースコア)」は「どれにも当てはまらなかったら」という意味の「デフォルト」役割です。

4. match文の特徴とif文との違い

4. match文の特徴とif文との違い
4. match文の特徴とif文との違い

match文は単純に値を比べるだけでなく、もっと複雑なパターンを調べられるのが特徴です。

たとえば、リストや辞書の中身の形を判別したり、変数の値を取り出して使ったりできます。これにより、プログラムをより簡潔に、そしてわかりやすく書けるのです。

一方で、if文は「条件式が真かどうか」をひとつずつ判断していくのに対し、match文は「値がどのパターンに当てはまるか」を判別する仕組みです。

初心者のうちは、単純な値の比較はmatch文でもif-elif文でも同じように使えます。慣れてきたらmatch文の便利な使い方も学んでみましょう。

5. もっと具体的なmatch文の例:数字による判定

5. もっと具体的なmatch文の例:数字による判定
5. もっと具体的なmatch文の例:数字による判定

次は、数字の値を判別する例です。


number = 2

match number:
    case 1:
        print("数字は1です。")
    case 2:
        print("数字は2です。")
    case 3 | 4 | 5:  # 3,4,5のいずれかならここに入る
        print("数字は3、4、または5のいずれかです。")
    case _:
        print("数字は1〜5の範囲外です。")

ポイント:

  • 3 | 4 | 5 は「3か4か5」のどれかに当てはまることを意味します。
  • 複数の値をまとめて扱いたいときに便利です。

6. match文で変数の中身を取り出す(パターンの中で値を使う)

6. match文で変数の中身を取り出す(パターンの中で値を使う)
6. match文で変数の中身を取り出す(パターンの中で値を使う)

match文は、パターンの中で値を変数として受け取ることもできます。例えばリストの中身を見て処理を変えたいときに使えます。


point = (10, 20)

match point:
    case (0, 0):
        print("原点にいます。")
    case (x, 0):
        print(f"x軸上にいます。xの値は{x}です。")
    case (0, y):
        print(f"y軸上にいます。yの値は{y}です。")
    case (x, y):
        print(f"座標はx={x}, y={y}です。")

ここでは、pointというタプル(2つの数字の組み合わせ)を調べています。case (x, 0):のように書くと、「2つ目が0で1つ目の値はxに入れる」という意味です。

7. match文が使えるPythonのバージョンについて

7. match文が使えるPythonのバージョンについて
7. match文が使えるPythonのバージョンについて

重要なのは、match文はPython 3.10以上で使えるということです。もしあなたのパソコンのPythonのバージョンが3.9以下の場合は、まずPythonをアップデートする必要があります。

Pythonのバージョン確認は、ターミナル(コマンドプロンプト)で以下のように入力します。


python --version

3.10以上であれば、今回紹介したmatch文を使えます。

8. match文のメリットと注意点

8. match文のメリットと注意点
8. match文のメリットと注意点

メリット:

  • コードが読みやすくなる
  • 複雑な条件分岐をシンプルに書ける
  • パターンにマッチしなければcase _:で簡単に対応可能

注意点:

  • Python 3.10以上が必要
  • 初心者には最初はif-elif文の方がわかりやすいかもしれません
  • 使いすぎるとコードが複雑になる場合もあるので使いどころを考えましょう

9. まとめ

9. まとめ
9. まとめ

今回はPythonのmatch文について、switch文の代替としての使い方をやさしく解説しました。条件によって処理を分けるときに、match文を使うとコードがスッキリ書ける場合があります。

最初はif-elif文を使うことも多いですが、Python 3.10以降ならぜひmatch文にも挑戦してみてください。

まとめ

まとめ
まとめ

Pythonのmatch文(パターンマッチング)は、条件分岐をより直感的に整理できる便利な構文であり、複雑な条件の整理や可読性向上に大きく役立ちます。とくにswitch文が存在しないPythonにおいて、match文は値の種類・形・パターンを柔軟に判定できる強力な手法です。本記事では、基本構文から実践的なパターンマッチングまで幅広く紹介しました。ここではさらに踏み込んで、実際の開発でも役立つパターンや注意点を整理し、Pythonのmatch文をより深く理解するための総合的なまとめを行います。

◆ match文の理解を深めるポイント

match文は単純な値だけでなく、タプルやリスト、辞書、複数条件のOR(|)などにも柔軟に対応できます。さらにcaseブロック内で変数を抽出し、そのまま新しい値として利用できるため、if文よりも状況に応じた分岐をスムーズに表現できます。これはPython特有の表現力の高さを活かした書き方であり、コード量を減らしながら処理の意図を明確にできます。

◆ match文を使った実践的なサンプルコード

以下は、文字列・数字・タプル・辞書など複数のデータ形式に対応した高度なパターンマッチング例です。


data = {"type": "user", "name": "たろう", "age": 20}

match data:
    case {"type": "user", "name": name, "age": age} if age >= 18:
        print(f"{name}さんは大人のユーザーとして登録されています。")
    case {"type": "user", "name": name, "age": age}:
        print(f"{name}さんは未成年のユーザーです。")
    case {"type": "guest"}:
        print("ゲストとしてアクセスしています。")
    case _:
        print("データ形式が不明です。")

このように辞書から値を抽出し、追加条件(ifガード)まで組み合わせることで、複雑なロジックを非常に読みやすく表現できます。特にWebアプリケーションやAPI処理など、データ構造が変化しやすい場面でmatch文は効果を発揮し、Pythonの柔軟な構文を活かしたコード設計に大きく貢献します。

◆ match文を使う際の注意点

match文は便利ですが、すべての条件分岐に使う必要はありません。比較的シンプルな判断では従来のif-elif-else文のほうが読みやすくなる場合もあります。また、Python 3.10以上が必須であるため、実行環境のバージョンにも注意する必要があります。特に企業や学校など古いバージョンのPythonが使われている環境では、本番適用前にバージョン確認は欠かせません。

◆ match文を活用することで得られるメリット

・複雑な条件分岐を整理して可読性を高める
・パターンに応じた値抽出で処理を簡潔に書ける
・複数値の比較やデータ構造の判定が容易になる
・ネストが深くならず、初心者でもロジックが追いやすい
・Pythonの新しい書き方を習得することで開発の幅が広がる

これらの特徴は、プログラムの保守性やチーム開発の品質にも関わる重要なポイントです。match文は慣れると非常に強力で頼もしい構文なので、今後のPython学習でも積極的に活用していくとよいでしょう。

◆ 応用例:リストや組み合わせパターンの判定


values = [1, 2, 3]

match values:
    case [x, y, z]:
        print(f"3つの値が含まれています: {x}, {y}, {z}")
    case [x, y]:
        print(f"2つの値が含まれています: {x}, {y}")
    case [x]:
        print(f"1つの値が含まれています: {x}")
    case _:
        print("値の数が予想と異なります。")

リストの要素数に応じて分岐するような処理も、match文なら非常に読みやすくスッキリ書くことができます。データ分析や配列操作、ゲーム開発などでも役立つテクニックです。

先生と生徒の振り返り会話

生徒

「match文って、switch文みたいなものだけど、もっと柔軟に使えるんですね!特に辞書やリストも判定できるのが便利だと思いました。」

先生

「その通りです。Pythonではデータ構造が複雑になることも多いので、match文のパターンマッチングは非常に相性がいいんですよ。値を取り出して変数に代入する形も自然ですね。」

生徒

「確かに、if文だと長くなってしまう処理も、match文ならすっきり書けました。Pythonをもっと深く学べそうです!」

先生

「match文はPython 3.10以降の新しい文法ですが、慣れると非常に便利です。パターンの仕組みを理解して、ぜひ実際のコードでも試してみてくださいね。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Pythonのmatch文って、if文やelif文とどう違うのですか?

Pythonのmatch文は、if文やelif文のように条件によって処理を分岐しますが、「パターンマッチング」と呼ばれる方法で値の形や種類に応じた分岐ができます。より直感的に複雑な構造を判定できるのが特徴です。
カテゴリの一覧へ
新着記事
New1
Django
Djangoのプロジェクトとアプリの違いを徹底解説!初心者でも迷わない構造の考え方
New2
Flask
FlaskでRQ(Redis Queue)を使って非同期タスク管理を行う方法|初心者向けやさしい解説
New3
Flask
FlaskでCookieを安全に使う方法!HttpOnly・Secureフラグの使い方を徹底解説
New4
Flask
Flask‑RESTfulでREST APIを構築する手順まとめ!初心者向けにやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
No.3
Java&Spring記事人気No3
Flask
Flaskアプリの環境変数設定方法!安全で柔軟な構成を実現しよう
No.4
Java&Spring記事人気No4
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.5
Java&Spring記事人気No5
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.6
Java&Spring記事人気No6
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説
No.7
Java&Spring記事人気No7
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.8
Java&Spring記事人気No8
Flask
Flask-WTFの使い方!フォームバリデーションを簡単にする拡張機能の導入手順