Python学習チャンネル by PyQ

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

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

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

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

次のPythonのバージョンである Python 3.13は、2024年10月に正式リリース予定です。 本記事では、Python 3.13の更新内容を紹介します。

Python 3.13のリリースについて

Python 3.13の正式版までのリリーススケジュールはPEP 719で公開され、概ねそのスケジュールに沿って開発が進められています。

peps.python.org

2024年7月22日現在の時点では3.13.0 beta 4が公開されており、beta 4以降のスケジュールは以下のとおりです。

  • 3.13.0 candidate 1: Tuesday, 2024-07-30
  • 3.13.0 candidate 2: Tuesday, 2024-09-03
  • 3.13.0 final: Tuesday, 2024-10-01

candidate というのは正式版になる予定のバージョンのことです。 candidate 後はバグフィックスのみで機能の変更は原則行われないので、 candidate でも新機能を試すのには十分です。

それでは、今回は Python 3公式ドキュメント - What's New In Python 3.13 より、Python 3.13の更新内容を紹介します。

docs.python.org

Python 3.13の主要な変更点

以下が主要な変更点です。

  • インタープリターの改良
  • グローバルインタープリタロック(GIL)の廃止に向けた修正(PEP 703
  • ジャストインタイムコンパイラ(JITコンパイラ)の実験的なサポート(PEP 744

この中でGILとJITコンパイラに関する変更は、Python 3.11からはじまった CPython高速化計画 に関するものです。

今回は インタープリターの改善点 について詳しく紹介します。

インタープリターの改善点

Python 3.13でインタープリターが進化しました。主な変更点は以下です。

  • 今まではインタープリターの文字は1色で表示されていましたが、複数の色がつき、視認性が上がりました
  • インタープリター上で複数行の編集ができるようになりました
  • F1(ヘルプ)、F2(履歴)、F3(コードブロックの貼り付け)が追加されました
  • インタープリターのコマンド exitquithelp の後ろに () を書かなくてもよくなりました
  • エラーメッセージが進化しました

ここでは、 複数行の編集エラーメッセージの進化 について紹介します。

複数行の編集

今までは、インタープリターで書いた複数の行(ブロック)を一度に編集することができませんでした。そのため、複数行にわたる実装を書き間違えた場合は、1行目から書き直す必要がありました。

今回の変更では、 複数行にわたる実装の編集 が可能になりました。たとえば、②まで進んだ状態でも①の行に戻れるため、修正がしやすくなりました。 また、①のコロン(:)の後ろで改行すると 次の行に自動でインデントがつく ようになったのも嬉しい変更です。

エラーメッセージの進化

インタープリターの改善では、エラーメッセージもよりわかりやすくなるよう進化しました。

  • エラーメッセージが 複数の色で表示 されるようになり、視認性が上がりました
  • エラーメッセージがより具体的になり、 どのようにコードを修正すればよいかわかりやすくなりました

エラーメッセージの例

3.12以前と3.13でどのようにエラーメッセージが変わったか、具体的な例で見てみましょう。

下記のような random.pyというファイルを実行しようとした場合について考えます。 random という名前の標準ライブラリーが存在するため、同じファイル名のPythonスクリプトを作ると、実行時にエラーが発生してしまいます。

random.py

import random;print(random.randint(5))

3.12以前のエラーメッセージは、次のような内容でした。

AttributeError: partially initialized module 'random' has no attribute 'randint' (most likely due to a circular import)

これが、3.13では次のようなエラーメッセージが表示されるようになりました。

エラーメッセージに色がついて読みやすくなり、メッセージの量も増えている ことがわかります。

エラーメッセージを見てみると、「モジュール random に属性 randint はありません( /private/tmp/random.pyの改名を検討してください。標準ライブラリーに同じ名前のモジュール random がありますが、インポートシステムの優先順のせいです)」と書いてあります。

AttributeError: module 'random' has no attribute 'randint' (consider renaming '/private/tmp/random.py' since it has the same name as the standard library module named 'random' and the import system gives it precedence)

このように、エラーメッセージにより「標準ライブラリーと同じ名前のモジュールがあることが原因である」ということが具体的にわかるようになりました。

この他にも、「AttributeErrorが発生したとき、インポートしているサードパーティーモジュールとファイル名が同じ名前のときは教えてくれる」「関数のキーワード引数を間違えた場合、正しいつづりを教えてくれる」など、さまざまなメッセージ改善が行われました。

その他の変更点

Python 3.13では今回紹介した変更点以外にも、さまざまな更新があります。

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

docs.python.org

Copyright ©2017- BeProud Inc. All rights reserved.