「Python 3.12の新機能、アップデート、および強化機能についての最新情報」
「Python 3.12の最新機能、アップデート、そして強化に関する情報をご紹介」
Pythonは、その可読性、多様性、強力なコミュニティを特徴とする動的な言語であり、新しいバージョン3.12は10月2日にリリースされました。数々の改善と新機能により、世界中のコントリビューターがPythonをさらに飛躍させました。この言語の最新の改善に興味がある場合は、この記事をご覧ください。
Pythonは毎年新しいバージョンをリリースしており、年のはじめにはフィーチャーロックされたベータ版が、年末には公式の新バージョンが提供されます。
このバージョンでの進化をご紹介します。
エラーメッセージの改善
Pythonは、言語で求められる可能性のあるタイポに対するユーザーへの提案を開始しました。さらに、以下の新機能も追加されました。
- コード内でインポートを忘れたモジュールは、エラーメッセージの一部として新しいバージョンで提案されます。
- 変数や関数名のタイポによるNameErrorの場合、推奨される修正方法が提供されます。
- 失敗した
from <module> import <name>
ステートメントから発生したImportError例外は、<module>
内で可能性のある名前に基づいて<name>
の値を推測した提案を含むようになりました。
- 構文エラーメッセージが、
from x import y
の代わりにimport x from y
とユーザーが入力した場合に改善されました。
NameError
の推奨修正に、クラスインスタンス内で発生した場合、self.name
のようにself.
が名前の前に追加されるようになりました(例:name 'name' is not defined. Did you mean 'self.name'?
)。クラスインスタンス内でself
を省略することは、よくあるエラーの原因です。
F-Stringの改善
F-Strings(フォーマット済み文字列)は、Python 3.6で初めて導入されました。これはPythonの便利な文字列フォーマット方法です。以前のバージョンでは、フォーマット方法に制限がありましたが、3.12ではいくつかの制限が解除されました。
- 以前の使用方法に関係なく、F-String内で文字列の引用符(”または’)を使用することができるようになりました。
- 新しいバージョンでは、F-ストリングは他の括弧や引用符と同様に複数行の式にすることができます(例:複数行にわたる式を許可するために括弧を使用する)。
- これまで、バックスラッシュ(\)やUnicode文字はF-ストリングで許可されていませんでしたが、制限が解除されました。
- f-string式内のエラーは、エンクロージングステートメント内でのエラーの正確な位置を示すようになりました。これにより、f-stringのエラーのトラッキングとトラブルシューティングが容易になります。
型の改善
Pythonの型ヒント構文がPython3.5で導入され、静的検査ツールがエラーを事前に検出できるようになりました。TypeDictが新たに追加されました。
from Typing import TypedDict, Unpackclass Employee(TypedDict): name: str id: intdef retrieve(**kwargs: Unpack[Employee]) -> None: ...
TypeDictはキーワード引数を示すために使用されます。3.11で追加されたUnpackは、TypeDictを展開するために使用されます。
出力が異なるデータ型となる可能性がある汎用の関数の場合、ヒントにType変数が導入されています。
def first[T](elements: list[T]) -> T: return elements[0]
上記の関数では、整数のリストが渡されると、出力は整数になります。文字列のリストが渡されると、出力は文字列になります。また、上記の例ではTypingを宣言する必要はないことに注意してください。
静的型チェックも最新バージョンで強化されています。子クラスで親メソッドをオーバーライドする場合、型チェッカーがミスを検出するために@overrideを使用することができます。
from typing import overrideclass Base: def get_color(self) -> str: return "blue"class GoodChild(Base): @override # Okay: overrides Base.get_color def get_color(self) -> str: return "yellow"
内包表記
内包表記は、リスト、辞書、セットを素早く構築するための構文であり、もはや一度だけ使用される関数オブジェクトを作成しません。代わりに「インライン」で構築されます。結果の速度は実世界のケースでは約11%、マイクロベンチマークでは2倍以上高速化されました。
クイックニングは3.11よりも早く行われます。クイックニングは、特定のバイトコードが複数回実行されることを検出し、特殊化候補にするプロセスを指します。特殊化とは、インタプリタが一般的なバイトコードを専用のバイトコードに置き換えることを意味します。
サブインタプリタ
サブインタプリタは、各々独自のGILを持つ複数のインタプリタインスタンスを、1つのPythonプロセス内で並列に実行する機能を提供します。これはPythonの並列処理への大きな進歩です。ただし、バージョン3.12にはサブインタプリタを操作するためのエンドユーザーインタフェースはまだありません。
Linuxのperfプロファイラのサポート
広く使われているLinuxプロファイラツールperf
はPythonと連携していますが、PythonランタイムのCレベルでの動作に関する情報のみを返します。実際のPythonプログラム関数に関する情報は表示されません。
Python 3.12では、実行環境レベルまたはsys.activate_stack_trampoline
関数を使ってPythonプログラム内でオプトインモードを有効にすることで、perf
がPythonプログラムの詳細情報を取得できるようになります。
その他の注目すべき機能
- 不死なオブジェクトが導入されました – 参照カウントは変化しません。
- オブジェクトのサイズが小型化され、96バイトになりました。
- 日や月のためのカレンダー定数。
- distutilsが最新バージョンで削除されるなど、いくつかの標準ライブラリの非推奨および削除が行われました。
- 最新バージョンで非同期処理にさまざまな改善が加わりました。
リリースドキュメントを添付します。参考のために使用されています — https://www.python.org/downloads/release/python-3120/
3.12にアップグレードする価値はあるのでしょうか?
Happy Learning …
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles