Python入門

Pythonの主な新機能まとめ|バージョンごとの変更の要点を解説

Pythonの主な新機能まとめ|バージョンごとの変更の要点を解説
naoki-hn

Python は継続的に進化しています。この記事では Python 各バージョンの主な新機能・変更点の要点をまとめて解説します。

はじめに

Python は、定期的に新バージョンがリリースされ、文法の追加や標準ライブラリの拡張、パフォーマンスの改善など、様々な変更が行われています。新しい機能が追加されることで、より簡潔で読みやすいコードが書けるようになったり、開発効率が向上したりといったことも少なくありません。

Python の変更点は、公式ドキュメントのリリースノートから確認できます。しかし、すべてを把握するのは容易ではありません。

そこで、この記事では、Python 3.10 以降のバージョンを対象に、特に重要と考えられる新機能や変更点を中心に要点を整理して紹介します。なお、すべての変更点を網羅するものではなく、筆者が重要だと考えるものを優先して取り上げています。

より詳細には公式ドキュメントの各バージョンにおける「What’s new in Python X.X?」というリンクを参照してください。

また、各機能の詳細については、本サイトで個別記事として解説しているものもあるため、必要に応じて関連記事へのリンクも掲載しています。

記事初回公開時点で EOL (End of Life) となっている Python 3.9 以前のバージョンは、この記事では扱っていません。3.10 以降のバージョンについては、今後 EOL になった場合でも削除せず、本記事の履歴として残す予定です。

Python 各バージョンの主な新機能・変更点

Python 3.14

Python 3.14 では、型注釈の仕組みや並列処理に関する改善など、言語仕様に関わる変更がいくつか導入されています。また、文字列機能(t-string)や圧縮ライブラリ(zstd)など、開発者の利便性を高める文法や標準ライブラリ拡張も行われています。

型注釈の遅延評価

型注釈の評価モデルが変更され、遅延評価の仕組みが導入されました。これにより、型注釈は、必要なタイミングで評価されるようになりました。

【遅延評価とは】

遅延評価とは、式や関数の評価を、実際に必要になるまで先送りする最適化方法です。これにより、不要な計算を回避できたり、無限データを扱えたりといったメリットがあります。

フリースレッドな Python(改善)

Python 3.13 で実験的に導入されたフリースレッドな Python の改善が進められました。フリースレッドな Python では、従来の GIL (Global Interpreter Lock) に依存しない実行モデルが検討されており、マルチスレッド環境での並列処理性能の向上が期待されています。

テンプレート文字列(t-string)

新しい文字列機能としてテンプレート文字列(t-string)が文法に導入されました。これは、文字列のテンプレート処理を安全かつ柔軟に扱うための仕組みで「文字列化されていないテンプレート」という概念を Python 標準の文法として取り入れています。

f-string は、文字列として即時評価されますが、t-string は後から評価・処理できるため、安全な文字列処理を実現するための実装に役立ちます。

t-string については「テンプレート文字列 t-string の使い方」を参考にしてください。

Zstandard(zstd)の標準ライブラリ化

Zstandard は、Meta(旧 Facebook)が開発した高速で高圧縮な圧縮アルゴリズムです。Python 3.13 以前でも、外部ライブラリで使用できましたが、Python 3.14 で標準ライブラリ(zstd)として取り込まれました。

これにより、外部ライブラリに依存しない形で、高速かつ高圧縮な Zstandard のデータ圧縮を扱えるようになりました。

zstd については「zstd によりデータを圧縮/解凍する基本」を参考にしてください。

Python 3.13

Python 3.13 では、Python の実行モデルや開発体験に関わる改善が導入されています。特に、並列処理や実行速度の向上を目指した実験的な機能が追加されている点が特徴的です。

フリースレッドな Python(実験)

フリースレッドな Python」が実験的な機能として導入されました。従来の Python では、マルチスレッドの並列処理では、GIL (Global Interpreter Lock) により制限を受けていました。

フリースレッドな Python は、GIL を使わない実行モデルであり、試験的に導入されました。この機能により、将来的には、Python でも効率的なマルチスレッド処理が可能になると期待されています。

JIT (Just-In-Time) コンパイラ(実験)

プログラム実行時にコードをコンパイルして最適化する「JIT (Just-In-Time) コンパイラ」が実験的な機能として導入されました。JITは、プログラム実行時にコードを機械語へ変換・最適化することで、処理のパフォーマンス向上が期待されています。

REPL 改善

インタラクティブな実行環境(REPL)が大きく改善されています。表示機能などが強化され、Python を対話的に利用する際の操作性が向上しました。

【REPL とは】

REPL は、R (Read:読み込み)、E (Evaluate:評価)、P (Print:表示)、L (Loop:ループ) のことで、Python の対話型実行環境のことを言います。

Python 3.12

Python 3.12 では、文字列機能強化や標準ライブラリの整理など、言語仕様や開発環境を整えるための変更が行われました。

f-string 文法の拡張

f-string の使い方の制限がいくつか解除され、より柔軟に式を記述できるようになりました。例えば、「f-string を囲むクォートと同じクォートを文字列中で再利用できるようになった」などがあります。

これにより、従来制限されていた複雑な式や改行を含む表現なども f-string 内で扱えるようになっています。

distutils 削除

Python パッケージを作成・配布するためのツールとして、長年非推奨となっていた distutils モジュールが正式に削除されました。現在では、setuptools が事実上デファクトスタンダードの位置づけとなっています。

distutils の機能は、setuptools に取り込まれているため、3.12 以降で distutils が必要な場合でも、setuptools に含まれる互換実装を利用できます。

サブインタープリタ(インタープリタごとの GIL)

サブインタープリタごとに独立した GIL を持つ仕組み(Per-interpreter GIL)の実装が進められました。これは、将来的な並列処理改善に向けた重要な基盤です。

Python 3.11

Python 3.11 では、Python の大幅なパフォーマンス改善が注目されました。実行速度の向上に加えて例外処理や標準ライブラリにも変更が加えられています。

実行速度の大幅改善

インタープリタの内部最適化などが進められ、実行速度が大幅に改善されました。3.11 のリリースノートでは「Python 3.10 とくらべて 10-60% 高速」「平均的には、標準ベンチマークスイートでは 1.25倍の高速化を計測」と記載があり、大きな性能向上が確認されています。

例外グループ / except*

複数の例外をまとめて扱うための例外グループ(ExceptionGroup)が導入されました。これにより例外をグループ化してまとめて送出できるようになりました。

また、対応する構文として「except*」が追加されており、例外グループの中に指定した型の例外が含まれている場合、その例外だけを取り出して処理することができるようになりました。

例外グループにより、並列処理などで複数例外が発生する場合に、処理が行いやすくなっています。

tomllib 標準ライブラリ化

TOML ファイルを読み込むための tomllib モジュールが標準ライブラリとして追加されました。これにより、設定ファイルなどで利用される TOML 形式を標準機能として扱えるようになりました。

近年の Python では、pyproject.toml でプロジェクト設定や依存関係、ツール設定を一元化することが一般的となっているため、tomllib は重要な役割を果たします。

tomllib については「tomllibでTOMLファイルを読み込む方法」を参考にしてください。

Python 3.10

Python 3.10 では、新しい構文や型ヒント改善など、Python の書き方に影響する重要な変更が導入されています。

構造的パターンマッチ(match / case

新しい構文として、構造的パターンマッチ(match / caseが導入されました。構造的パターンマッチは、3.10 の中心的な新機能であり、最も議論を起こした複雑な機能とも言われています。この機能は受理されるまで何度も議論されました。

これは、値のパターンに応じて処理を分岐する仕組みで、他言語の switch に似ていますが、クラス構造などを含めてマッチングできるなど、より柔軟なマッチングを行うことができます。

構造的パターンマッチについては「構造的パターンマッチ(match case)の使い方」を参考にしてください。

Union 型(|

型ヒントで、Union 型を | 演算子X | Y のように記述できるようになりました。Union 型とは、「1 つの変数や引数が、複数の型のうちいずれかを取り得る」ことを示すための型ヒントです。従来の typing.Union[X, Y] といった形式より簡潔に型表現できるようになっています。

distutils 非推奨

パッケージビルドツールである distutils が非推奨となりました。その後、Python 3.12 で正式に削除されており、現在は setuptools が事実上のデファクトスタンダードの位置づけとなっています。

まとめ

この記事では、Python の各バージョン(3.10 以降)の主な新機能や変更点について紹介しました。

Python は継続的に進化しており、新しいバージョンでは文法の追加やパフォーマンス改善などが行われています。特に Python 3.10 以降では、構造的パターンマッチや例外グループ、フリースレッドな Python など、言語仕様や実行環境に関わる重要な変更が導入されています。

Python 利用の際には、使用バージョンによる違いを意識して使用してみてください。

あわせて読みたい
【Python Tech】プログラミングガイド
【Python Tech】プログラミングガイド
ABOUT ME
ホッシー
ホッシー
システムエンジニア
はじめまして。当サイトをご覧いただきありがとうございます。 私は製造業のメーカーで、DX推進や業務システムの設計・開発・導入を担当しているシステムエンジニアです。これまでに転職も経験しており、以前は大手電機メーカーでシステム開発に携わっていました。

プログラミング言語はこれまでC、C++、JAVA等を扱ってきましたが、最近では特に機械学習等の分析でも注目されているPythonについてとても興味をもって取り組んでいます。これまでの経験をもとに、Pythonに興味を持つ方のお役に立てるような情報を発信していきたいと思います。どうぞよろしくお願いいたします。

※キャラクターデザイン:ゼイルン様
記事URLをコピーしました