Python 3.13
目次
Python 3.13 の新機能と改善点
Python 3.13 は、言語の進化、パフォーマンスの向上、および開発者の利便性を重視したリリースです。本記事では、ジュニアエンジニアにも分かりやすいように、新機能や改善点を解説します。
1. 新しいインタラクティブインタープリター
Python の REPL (対話型シェル) が刷新され、より使いやすくなりました。
✅ 主な改善点
- 多行編集と履歴の保存
- REPL コマンド (
help
,exit
,quit
) が直接使用可能 - デフォルトでカラー表示のプロンプトとエラーメッセージ
- F1キーでヘルプ、F2キーで履歴ブラウズ、F3キーでペーストモード
🔹 無効化したい場合 → 環境変数 PYTHON_BASIC_REPL=1
を設定。
2. GIL (グローバルインタプリタロック) を無効にできる実験的機能
✅ 変更点
- GIL を無効にして実行できる CPython の実験的サポート
- 並列処理の性能向上 (特に CPU をフル活用するマルチスレッドアプリ向け)
python3.13t
という別の実行ファイルで利用- 環境変数
PYTHON_GIL=0
または-X gil=0
で制御
⚠ 注意点
- まだ実験段階 (シングルスレッドのパフォーマンスが若干低下する可能性)
- C 拡張モジュールは、GIL 無効化用に再ビルドが必要
3. Just-In-Time (JIT) コンパイラーの実験的導入
Python 3.13 では、プログラムを高速化する JIT コンパイラー の試験的サポートが追加されました。
✅ ポイント
- JIT を有効にするには、ビルド時に
--enable-experimental-jit
を指定 - ホットな (頻繁に実行される) コードを動的に最適化
- デフォルトでは無効
- 今後のリリースでさらなる改善予定
🔹 確認方法
python3.13 -X jit=1
4. エラーメッセージの改善
エラーメッセージが、より分かりやすくなりました。
✅ 主な改善点
- デフォルトでカラー表示
- 関数の誤った引数に対し、正しい候補を提案
- スクリプト名が標準ライブラリと衝突した場合、明確な警告を表示
🔹 無効化したい場合 → 環境変数 PYTHON_COLORS=0
5. locals()
の動作が明確化
これまでは、locals()
の返すマッピングを変更した際の挙動が曖昧でした。
✅ 改善点
- 関数スコープでは
locals()
の返す辞書が独立したスナップショットに exec()
やeval()
のlocals()
に対する変更が、後続のlocals()
呼び出しに影響しなくなった
6. iOS と Android が公式サポート (Tier 3)
✅ Python が公式に iOS/Android に対応
- iOS (arm64)
- Android (aarch64, x86_64)
⚠ まだ Tier 3 のため、安定性は保証されていません。
7. その他の言語仕様の改善
✅ 変更点
str.replace()
のcount
がキーワード引数として指定可能に- クラスの
__static_attributes__
が追加 (クラス内で変更される属性を記録) - 関数
exec()
やeval()
のglobals
/locals
をキーワード引数として指定可能に
🔹 例
text = "hello world" print(text.replace("o", "O", count=1)) # 1回だけ置換
8. 新しい標準モジュール
✅ dbm.sqlite3
- SQLite をバックエンドとする
dbm
実装 dbm.ndbm
やdbm.gnu
の代替として利用可能
🔹 使い方
import dbm.sqlite3 with dbm.sqlite3.open('mydb', 'c') as db: db[b'key'] = b'value' print(db[b'key']) # b'value'
9. 標準ライブラリの改善
🔹 asyncio
の改善
asyncio.as_completed()
が awaitable を受け付けるようにQueue.shutdown()
による安全なキューの終了
🔹 math
の新関数
math.fma()
(融合積和演算)
import math print(math.fma(2.0, 3.0, 4.0)) # (2 * 3) + 4 = 10.0
🔹 mimetypes
の MIME タイプ推測
import mimetypes print(mimetypes.guess_file_type("example.jpg")) # ('image/jpeg', None)
🔹 pathlib
の改善
Path.from_uri("file:///home/user/file.txt")
でPath
オブジェクトを生成
🔹 bz2
, lzma
, tarfile
, zipfile
の改善
name
およびmode
属性をサポート
まとめ
Python 3.13 では、新しい インタラクティブシェル、GIL の無効化、JIT コンパイラーの実験的導入 など、開発体験を向上させる多くの機能が追加されました。
📌 次のステップ
- Python 3.13 の公式ドキュメント
- 新機能を試して、Python の最新の進化を体験しましょう! 🚀