「Python 3.12の新機能、アップデート、および強化機能についての最新情報」

「Python 3.12の最新機能、アップデート、そして強化に関する情報をご紹介」

Pythonは、その可読性、多様性、強力なコミュニティを特徴とする動的な言語であり、新しいバージョン3.12は10月2日にリリースされました。数々の改善と新機能により、世界中のコントリビューターがPythonをさらに飛躍させました。この言語の最新の改善に興味がある場合は、この記事をご覧ください。

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内で文字列の引用符(”または’)を使用することができるようになりました。
以前のバージョンの使用方法
3.12バージョンの使用方法
  • 新しいバージョンでは、F-ストリングは他の括弧や引用符と同様に複数行の式にすることができます(例:複数行にわたる式を許可するために括弧を使用する)。
  • これまで、バックスラッシュ(\)やUnicode文字はF-ストリングで許可されていませんでしたが、制限が解除されました。
Previous Version
Version 3.12
  • 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!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

人工知能

「aiOlaのCEO兼共同創設者、アミール・ハラマティによるインタビューシリーズ」

アミール・ハラマティは、aiOlaのCEO兼共同創業者であり、スピーチを作業可能にし、どこでも完全な正確さで業界固有のプロセ...

人工知能

「コマンドバーの創設者兼CEO、ジェームズ・エバンスによるインタビューシリーズ」

ジェームズ・エバンズは、CommandBarの創設者兼CEOであり、製品、マーケティング、顧客チームを支援するために設計されたAIパ...

データサイエンス

アステラソフトウェアのCOO、ジェイ・ミシュラ - インタビューシリーズ

ジェイ・ミシュラは、急速に成長しているエンタープライズ向けデータソリューションの提供企業であるAstera Softwareの最高執...

人工知能

ピーター・マッキー、Sonarの開発者担当責任者-インタビューシリーズ

ピーター・マッキーはSonarのDeveloper Relationsの責任者です Sonarは、悪いコードの1兆ドルの課題を解決するプラットフォー...

人工知能

『ジュリエット・パウエル&アート・クライナー、The AI Dilemma – インタビューシリーズの著者』

『AIのジレンマ』は、ジュリエット・パウエルとアート・クライナーによって書かれましたジュリエット・パウエルは、著者であ...

人工知能

ムーバブルインクのCEO兼共同創設者であるヴィヴェク・シャルマ氏についてのインタビュー・シリーズ

ビヴェクは2010年にムーバブルインクを共同設立し、急速な成長を遂げながら、600人以上の従業員を擁し、世界有数の革新的なブ...