こんにちは、PyQチームです。今回は、Pythonの最新情報をお知らせします。
次のPythonのバージョンである Python 3.13は、2024年10月に正式リリース予定です。 本記事では、Python 3.13の更新内容を紹介します。
Python 3.13のリリースについて
Python 3.13の正式版までのリリーススケジュールはPEP 719で公開され、概ねそのスケジュールに沿って開発が進められています。
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の更新内容を紹介します。
Python 3.13の主要な変更点
以下が主要な変更点です。
この中でGILとJITコンパイラに関する変更は、Python 3.11からはじまった CPython高速化計画 に関するものです。
今回は インタープリターの改善点 について詳しく紹介します。
インタープリターの改善点
Python 3.13でインタープリターが進化しました。主な変更点は以下です。
- 今まではインタープリターの文字は1色で表示されていましたが、複数の色がつき、視認性が上がりました
- インタープリター上で複数行の編集ができるようになりました
- F1(ヘルプ)、F2(履歴)、F3(コードブロックの貼り付け)が追加されました
- インタープリターのコマンド
exit
、quit
、help
の後ろに()
を書かなくてもよくなりました - エラーメッセージが進化しました
ここでは、 複数行の編集 と エラーメッセージの進化 について紹介します。
複数行の編集
今までは、インタープリターで書いた複数の行(ブロック)を一度に編集することができませんでした。そのため、複数行にわたる実装を書き間違えた場合は、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 をご確認ください。