# Python のバージョン：Python 2 と 3 の違い、3.10〜3.15 の新機能、どれをインストールすべきか

URL: https://skillaria.top/ja/guides/python/python-versions

現在の Python は 3 系だけです。最新の安定版は Python 3.15（2026 年 10 月 9 日リリース）で、Python 2 は 2020 年にサポートが終了しました。新バージョンは毎年 10 月に出ており、約 5 年間修正を受けられます。新しいプロジェクトには最新の 3.x を入れ、現在のバージョンは python3 --version で確認できます。

現在、開発が続いているのは Python 3 だけです。最新の安定版は Python 3.15 で、2026 年 10 月 9 日にリリースされました。Python 2 は 2020 年にサポートが終了しています。この記事では、Python のバージョンの違い、3.10〜3.15 で追加された機能、どのバージョンを入れるべきか、お使いのパソコンのバージョンを確認する方法を説明します。

## Python のバージョン番号の仕組み

バージョン番号は `3.15.0` のように三つの数字で構成されます。最初の数字はメジャーバージョン（系統）、二番目はマイナーバージョン（新機能が追加される版）、三番目はパッチ番号（バグ修正だけの版）です。「Python のバージョン」と言うときは、通常 3.10、3.11、3.12 のようなマイナーバージョンを指します。

2019 年から、PEP 602 に基づく 1 年周期のリリースが続いています。新しいマイナーバージョンは毎年 10 月に出ます。リリースの半年ほど前にアルファ版、その後にベータ版と候補版が公開され、本リリース後には 3.15.1、3.15.2 のようなパッチが出ます。パッチ版への更新は安全で、言語の動作はパッチ版では変わりません。

検索でよく混乱するのが、「python 311」と「python 3.11」は同じ、という点です。これはバージョン 3.11 を指します。小数点の数字ではないので、3.10 は 3.9 より新しく、3.15 は 3.2 より新しいのです。

## Python 2 と Python 3 の違い

Python 3 は 2008 年に登場しました。言語の古い設計を改めるため、後方互換性を意図的に壊しました。そのため、Python 2 向けのコードは、修正なしでは Python 3 で動かないことが多いです。第 2 系統の最後のバージョンは 2.7 で、サポートは 2020 年 1 月 1 日に終了しました。最終版の 2.7.18 は 2020 年 4 月にリリースされています。

| 項目 | Python 2 | Python 3 |
| --- | --- | --- |

| 出力 | `print "hi"`（文） | `print("hi")`（関数） |

| 文字列 | デフォルトはバイト列、Unicode は `u"..."` | `str` は常に Unicode、バイト列は `bytes` |

| 割り算 | `7 / 2` は 3 | `7 / 2` は 3.5、整数の割り算は `7 // 2` |

| 入力 | `raw_input()` | `input()` |

| 範囲 | `range` はリストを作り、`xrange` は遅延評価 | `range` は遅延評価 |

| サポート | 2020 年以降なし | 毎年新バージョンが出る |

教材やサンプルで `print` が括弧なしで書かれていたら、それは Python 2 の古い教材です。今どき Python 2 を学ぶ必要はありません。新しいシステムにはインストールされておらず、ライブラリもサポートを終えています。古いコードを移行するときに知識が必要になる程度です。

## Python 3.10〜3.15 の新機能

ここでは、日常的なコードに影響するポイントを各バージョンごとに紹介します。すべての変更点は、公式ドキュメントの What's New に掲載されています。

### Python 3.10（2021 年 10 月）

- 構造的パターンマッチング `match`/`case`（PEP 634）。`if`/`elif` の連鎖の代わりに、データの構造を分解して判定できます。
- 縦棒による型の合成：`Optional[int]` の代わりに `int | None`（PEP 604）。
- 一つの `with` で複数のコンテキストマネージャを括弧付きで書けます。
- 構文エラーのメッセージがかなりわかりやすくなりました。

```
def describe(point):
    match point:
        case (0, 0):
            return "原点"
        case (x, 0):
            return f"X 軸上: {x}"
        case _:
            return "それ以外の場所"

print(describe((3, 0)))  # X 軸上: 3
```

### Python 3.11（2022 年 10 月）

- 速度：Faster CPython プロジェクトにより、インタプリタの速度は平均で約 4 分の 1 向上しました。処理によってはさらに速くなります。
- トレースバックの正確な位置表示：`^^^^` の矢印で、行のどの式でエラーが起きたかを示します（PEP 657）。
- 例外グループと `except*`（PEP 654）。例外には `add_note()` でメモを付けられます。
- TOML を読む標準モジュール `tomllib`。たとえば `pyproject.toml` を読めます。

### Python 3.12（2023 年 10 月）

- ジェネリクスの新しい構文：`def first[T](items: list[T]) -> T` と、型の別名を作る `type` 文（PEP 695）。
- f 文字列が完全な文法として整理されました（PEP 701）。波かっこの中で同じ引用符を使ったり、改行やコメントを入れたりできます。
- 標準ライブラリから古い `distutils` が削除されました。
- 「モジュールのインポートを忘れていませんか？」など、エラーの提案がさらに詳しくなりました。

```
type Pair = tuple[int, int]

def first[T](items: list[T]) -> T:
    return items[0]

songs = ["a", "b"]
print(f"最初: {first(songs)!r}、全部で {len(songs)} 曲")
print(f"{"引用符の中"}")  # 3.12 以降で動作
```

よくある質問「f 文字列はどのバージョンから使えるか」への答えを補足します。f 文字列自体は Python 3.6 から使えます。波かっこの中で引用符や改行を自由に使えるようになったのは 3.12 からです。

### Python 3.13（2024 年 10 月）

- 新しい対話型コンソール。色付き、複数行の編集、履歴に対応し、`exit` と `help` は括弧なしで使えます。
- 実験的な GIL なしビルド（free-threaded、PEP 703）と、実験的な JIT コンパイラ（PEP 744）。
- 使われなくなった標準モジュールを削除（PEP 594）。`cgi` や `telnetlib` などが対象です。
- 新しいバージョンのバグ修正期間が 2 年に延びました。

### Python 3.14（2025 年 10 月）

- テンプレート文字列（t 文字列）：`t"こんにちは、{name}"` は完成した文字列ではなく、安全に処理できるテンプレートオブジェクトを返します（PEP 750）。
- 型注釈の遅延評価（PEP 649）。ファイルの後の方で宣言された型に関する問題が減りました。
- GIL なしのビルドが実験的な段階を終え、正式にサポートされました。
- 標準モジュール `compression.zstd`、コンソールの構文ハイライト、括弧なしの `except A, B:`。

### Python 3.15（2026 年 10 月 9 日）

- 遅延インポート `lazy import`（PEP 810）。モジュールは起動時ではなく、最初に使われた時に読み込まれます。講座の計測では、`lazy import pandas` を使ったスクリプトの起動が、280 ms から 14 ms になりました。
- 標準の変更不可の辞書 `frozendict`（PEP 814）。
- 内包表記でのアンパック：`[*g for g in groups]`（PEP 798）。
- 標準ライブラリのサンプリング型プロファイラ Tachyon（PEP 799）。
- ファイル操作でデフォルトが UTF-8 になりました（PEP 686）。Windows での文字化けのトラブルが減ります。
- エラーメッセージの「Did you mean」（もしかして）ヒントが追加されました。

```
lazy import json                    # PEP 810
cfg = frozendict(limit=500)         # PEP 814
flat = [*g for g in [[1, 2], [3]]]  # PEP 798 -> [1, 2, 3]
print(flat, cfg["limit"])
# python -m profiling.sampling run app.py   # PEP 799、Tachyon
```

このコードは Python 3.15 でしか動きません。古いバージョンでは、`lazy import` と内包表記でのアンパックが `SyntaxError` になり、`frozendict` は `NameError` になります。

## Python のサポート期間

各バージョンのサポートは約 5 年間です。最初の期間は通常のバグ修正とパッチが出ます（3.13 以降は 2 年間）。その後はセキュリティ修正のみになり、期間の最後にサポートが終了します。終了した（end-of-life）バージョンでは、脆弱性が修正されることはありません。

| バージョン | リリース | サポート終了 | 2026 年 10 月時点の状態 |
| --- | --- | --- | --- |

| 2.7 | 2010 年 | 2020 年 1 月 | サポート終了 |

| 3.9 | 2020 年 10 月 | 2025 年 10 月 | サポート終了 |

| 3.10 | 2021 年 10 月 | 2026 年 10 月 | サポート終了間近 |

| 3.11 | 2022 年 10 月 | 2027 年 10 月 | セキュリティ修正のみ |

| 3.12 | 2023 年 10 月 | 2028 年 10 月 | セキュリティ修正のみ |

| 3.13 | 2024 年 10 月 | 2029 年 10 月 | バグ修正 |

| 3.14 | 2025 年 10 月 | 2030 年 10 月 | バグ修正 |

| 3.15 | 2026 年 10 月 | 2031 年 10 月 | 最新版 |

各バージョンの最新の状況は、Python Developer's Guide の「Status of Python versions」ページで公開されています。長く使うプロジェクトを作る前には、そのページを確認してください。

## どの Python をインストールすべきか

学習や新しいプロジェクトには、最新の安定版を選んでください。現在は Python 3.15 です。「実績のある 3.10 にしておこう」という考えは通用しません。2026 年 10 月に 3.10 はセキュリティ修正も終わるため、いずれ学び直すことになります。Python 3 の中では互換性が高く、古いバージョン向けのコードは新しいバージョンでほぼ動きますが、逆は必ずしも成り立ちません。

例外もあります。使いたいライブラリが新バージョン向けのビルド（wheel）をまだ出していない場合です。特に C 拡張を含むパッケージは、10 月のリリース直後の数週間に遅れることがあります。その場合は一つ前の 3.14 を使いましょう。寿命の長いサーバーでは、ディストリビューションのリポジトリにあるバージョンか、uv で指定したバージョンを使うのが一般的です。大切なルールは、サポート終了まで 1 年未満のバージョンを選ばないことです。

| 状況 | インストールするバージョン |
| --- | --- |

| ゼロから学ぶ | 最新の安定版（3.15） |

| 新しいプロジェクト | 最新版、または一つ前 |

| ライブラリが新バージョンに未対応 | 一つ前のマイナーバージョン |

| 古いプロジェクトが 3.10 以前 | サポートされているバージョンへの移行を計画 |

| Python 2 のコード | Python 3 へ移行 |

## Python のバージョンを確認する方法

ターミナルで一つのコマンドを入力すれば確認できます。macOS と Linux では通常 `python3` を使い、Windows では `python` または `py` ランチャーを使います。

```
$ python3 --version
Python 3.12.3        # 古いバージョンです。更新を検討してください

$ python3 -V
Python 3.15.0
```

Windows では、ランチャーでインストール済みのバージョンをすべて表示できます。uv は、認識しているバージョンと、インストールできるバージョンを表示します。

```
py --list
uv python list
```

プログラムの中からは `sys` モジュールでバージョンを取得できます。タプル `sys.version_info` を比較すると、スクリプトが実行中のインタプリタに対応しているかを自分で確認できます。

```
import sys

print(sys.version)            # ビルド日時を含む完全な文字列
print(sys.version_info[:3])   # 例: (3, 15, 0)

if sys.version_info < (3, 10):
    raise SystemExit("Python 3.10 以降が必要です")
```

`python3 --version` が、インストールしたはずのバージョンと違う場合は、PATH で別のインタプリタが先に見つかっています。どれが使われているかは、macOS と Linux では `which python3`、Windows では `where python` で確認できます。

## 一台のパソコンに複数のバージョンを入れる

3.13 と 3.15 を並べて入れておくのは問題ありません。それぞれ別のフォルダにインストールされます。複数のバージョンを扱うには uv が便利です。`uv python install 3.15` でバージョンをダウンロードし、`uv python pin 3.15` で `.python-version` ファイルにプロジェクトのバージョンを固定できます。Linux のシステムの Python は手動で変更しないでください。OS のツールがそれを使っています。

プロジェクトが必要とする最低バージョンは、`pyproject.toml` の `requires-python` で指定します。こうすると、パッケージマネージャは対応していないインタプリタへのインストールを拒否します。

```
[project]
name = "expenses"
version = "0.1.0"
requires-python = ">=3.15"
```

## まとめ

現在の Python は 3 系で、最新版は Python 3.15 です。遅延インポート、`frozendict`、UTF-8 がデフォルトになったことが大きな変更点です。Python 2 は 2020 年にサポートが終了し、3.10 は 2026 年 10 月にセキュリティ修正も終わります。そのため、学習もプロジェクトも新しいバージョンで始めることをおすすめします。お使いのバージョンは `python3 --version` で確認できます。講座では、各テーマの最後に「3.10〜3.15 の新機能」のブロックがあり、バージョンごとの違いを実際に試せます。

## FAQ

**Windows のスタートメニューにある「IDLE Python 3.10 64-bit」とは何ですか？**

インストーラが python.org から入れた、簡易的な開発環境です。名前にはインタプリタのバージョンとビット数が入っています。3.10 と表示されている場合、そのバージョンはサポート終了が近いので、新しいバージョンを入れることをおすすめします。

**Python 3.12 を 3.15 に上書きで更新できますか？**

マイナーバージョンは上書きではなく並べてインストールされます。3.15 を入れても古い 3.12 は残るので、必要なければ個別に削除します。ライブラリは新しいバージョンに入れ直すか、仮想環境を作り直す必要があります。

**64 ビット版と 32 ビット版の違いは何ですか？**

64 ビット版は、より多くのメモリを扱えて、現在のほぼすべてのパソコンに適しています。32 ビット版は、非常に古いシステムでしか使われません。

**アルファ版やベータ版は何のためにあるのですか？**

次のバージョンを事前に試すための、リリース前のビルドです。ライブラリやプロジェクトの動作確認に使われます。学習や仕事には、必ず正式版を使ってください。


---
Source: Skillaria.Top (https://skillaria.top)
