Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

2025年10月に正式版が公開されるPython 3.14について紹介します

こんにちは、PyQチームです。今回は、Pythonの最新情報をお知らせします。

次のPythonのバージョンである Python 3.14は、2025年10月に正式リリース予定です。
本記事では Python 3.14 の更新内容を、公式ドキュメントや PEP に基づいて紹介します。

Python 3.14のリリースについて

Python 3.14の正式版までのリリーススケジュールは PEP 745 で公開されており、現在もそのスケジュールに沿って開発が進められています。

peps.python.org

2025年8月27日現在の時点では、3.14.0 candidate 2 が公開されており、今後のスケジュールは以下のとおりです。

  • 3.14.0 candidate 3: Tuesday, 2025-09-16
  • 3.14.0 final: Tuesday, 2025-10-07

Pythonのリリースは通常、リリース候補(candidate)版が出た段階で基本的な機能は凍結され、以降はバグ修正や安定性向上に集中します。
そのため、正式リリースを待たずとも release candidate の段階で、新機能を試すには十分な品質と考えられます。
それでは、今回は Python 3公式ドキュメント - What's New In Python 3.14 より、Python 3.14の更新内容を紹介します。

Python 3.14の主要な変更点

主要な変更点のうち、以下について紹介します。

  • エラーメッセージの改善
  • テンプレート文字列(t-strings)の導入(PEP 750
  • Zstandardを扱えるモジュールzstdが追加(PEP 784

エラーメッセージの改善

Python 3.10 以降では、よくある間違いに対して、わかりやすく親切なエラーメッセージが表示されるようになりました。こうした改善は継続的に行われており、ここでは Python 3.14 で改善された内容を紹介します。

キーワードのタイプミスに対するエラーメッセージが次のように変わっています。

Python 3.13 以前の表示

>>> Whille True:
  File "<stdin>", line 1
    Whille True:
           ^^^^
SyntaxError: invalid syntax

Python 3.14 以降

>>> Whille True:
  File "<python-input-3>", line 1
    Whille True:
    ^^^^^^
SyntaxError: invalid syntax. Did you mean 'while'?

以前のバージョンでは単に SyntaxError: invalid syntax と表示されていましたが、3.14 からは Did you mean 'while'? (「もしかして 'while' のことですか?」)という具体的な修正提案が含まれるようになりました。
さらに、エラー位置を示す ^^^^^ のマーカーも改善されており、以前は True の下を指していたのが、タイプミスした Whille の部分を正しく示すようになっています。
これにより、誤りの内容と場所の両方に気付きやすくなりました。

docs.python.org

テンプレート文字列( t-strings )の導入

Python 3.6で導入された f-string (例: f"Hello, {name}" )は、可読性と利便性から多くの人に使われています。Python 3.14ではそれに加えて、テンプレート文字列( t-stringsが新たに導入されました。
t-strings で書かれたオブジェクトは、string.templatelib.Template型として扱われます。これは、「どこがそのままの文字で、どこに変数を差し込むのか」 という構造のオブジェクトです。

peps.python.org

f-stringsを使った場合:

name = "蛇山"
age = 14

f_string = f"私の名前は{name}です。{age}歳です。"
print(type(f_string))  # 型の確認
print(f_string)

実行結果:

<class 'str'> # 型の確認
私の名前は蛇山です。14歳です。

このように、f-stringsの結果は単なる文字列です。
結果として出力された「私の名前は蛇山です。14歳です。」を見ても、どの部分が固定の文字列で、どこに変数や計算式が埋め込まれたかはわかりません。

これに対し、Python3.14で導入されたt-stringsを使って組み立てた場合は、次のようになります。
t-stringsを使った場合:

# t文字列で組み立てた場合
t_string = t"私の名前は{name}です。{age}歳です。"
print(type(t_string))  # 型の確認
print(t_string)

実行結果:

<class 'string.templatelib.Template'> # 型の確認
Template(
  strings=('私の名前は', 'です。', '歳です。'),
  interpolations=(
    Interpolation('蛇山', 'name', None, ''),
    Interpolation(14, 'age', None, '')
  )
)
# 見やすくするために改行を入れています

実行結果が string.templatelib.Template型 になっています。
これによりテンプレートの構造情報である、静的文字列と、{name}{age}といった埋め込まれた値の元の情報が構造的に保持されていることがわかります。
そのため、次のように属性を使うことで、テンプレートに埋め込んだ値を参照できます。

print(t_string.interpolations[0].value)  # 1つ目に埋め込んだ値を表示
print(t_string.interpolations[1].value)  # 2つ目に埋め込んだ値を表示

実行結果:

蛇山 # 1つ目に埋め込んだ値を表示
14 # 2つ目に埋め込んだ値を表示

この「テンプレートの構造情報」を持つことで、テンプレート文字列に埋め込まれた値をプログラムで処理して安全に扱えるようになります。
この機能により以下のようなメリットが期待されています。

  • 動的なコンテンツ生成の柔軟性:HTMLのサニタイズや安全なSQLクエリ生成など、より柔軟かつ高度な動的コンテンツ生成が可能になります
  • セキュリティの強化: ユーザー入力に含まれる悪意あるコードを、文字列生成前に検知・安全な形式に変換できます
  • カスタムビジネスロジックの実装: 特定の目的に合わせた独自処理ルールを簡単に作れ、データベースの安全な操作やウェブページの生成など、多様な場面で応用が期待されます

新しい標準ライブラリ Zstandard の追加

ファイルやデータを圧縮する技術は、ストレージの節約やネットワーク転送速度の向上に欠かせません。Python 3.14では、これまで外部ライブラリとして提供されていた Zstandard(Zstd)という高速かつ高効率な圧縮フォーマットが、ついに標準ライブラリに追加されました。
compression.zstdモジュールとして提供され、既存のlzmabz2と同じようなシンプルなAPIで利用できます。

peps.python.org

from compression import zstd
import math

data = b"abcdefghijklmnopqrstuvwxyz" * 20 # 長い文字列
compressed = zstd.compress(data)
ratio = len(compressed) / len(data)
print(data) # 圧縮前
print(compressed) # 圧縮後
print(f"圧縮比は {ratio} です。")

実行結果:

b'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz'# 圧縮前
b'(\xb5/\xfd`\x08\x01\r\x01\x00\xd0abcdefghijklmnopqrstuvwxyz\x01\x00\xae\xb7:\xc7'# 圧縮後
圧縮比は 0.08269230769230769 です。

サイズが520byte から 43byteになり、およそ8%に圧縮されました。

Zstandard は、非常に効率的で高速なことで知られています。データ解析や、大量のログファイルを扱うなど、データ圧縮が必要な場面で手軽に利用できるようになったのは、大きなメリットです。

その他の変更点

  • UUID のバージョン6〜8に対応、バージョン3~5の一部生成の高速化
  • 対話モードで入力しているPythonコードが自動的に色分けされて表示されるようになりました

詳細は Python 公式ドキュメント - What's New In Python 3.14 をご確認ください。

Copyright ©2017- BeProud Inc. All rights reserved.