2024-04-12 Python 3.12の新機能(その7) PEP 709: 内包式のインライン化
Python3.0以降では、リスト内包でエラーが発生すると、トレースバックに <listcomp>
という不思議な関数名が表示されることがありました。
>>> def func():
... [1/0 for i in range(10)]
...
>>> f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in func
File "<stdin>", line 2, in <listcomp>
ZeroDivisionError: di
2024-04-10 Python 3.12の新機能(その6) PEP 683: 固定参照カウントによる永続オブジェクト
Pythonは、すべての変数などが参照しているオブジェクトを正確に把握し、それぞれのオブジェクトが参照されている数を厳密に記録しています。この、記録されている参照の数を、参照カウント と言います。参照カウントが 0 になると、そのオブジェクトはすでに利用されていないことが明らかなので、Pythonはそのオブジェクトを開放します。
オブジェクトの参照カウントは、sys.getrefcount() で調べられます。
次の例では、sys.getrefcount()
を使って、True
オブジェクトが参照されている数を調べています
2024-04-10 Python 3.12の新機能(その5) PEP 684: インタープリター別GIL
Python3.11で開始された Faster CPython: CPython 高速化計画ですが、予定されていた Tracing optimizerが追加されなかったこともあり、残念ながらPython3.12では大きなパフォーマンスの改善は見られませんでした。
しかし、将来の高速化に向けて、大きな機能追加がありました。
サブインタープリター¶
Pythonのあまり知られていない機能に、サブインタープリター があります。これは一つのプロセス内で複数のPython実行環境を作成し、複数のアプリケーションを同時に動かすことができる
2023-10-10 Python 3.12の新機能(その4) PEP 688: バッファープロトコルをPythonで利用可能に
Pythonで最も有名なライブラリの一つに、Numpy があります。Numpyは科学技術計算、機械学習、AI、画像処理など、多岐にわたる分野で利用され、今日のPythonの普及に大きく貢献しています。
Numpyは独立したライブラリですが、もともとはPythonの標準ライブラリに組み込む予定で開発が始まりました。しかし、プロジェクトが大規模化したため、最終的に独立したライブラリとして提供されることになりました。この経緯から、NumpyはPython言語と密接な関係を持ち、その設計や実装に大きな影響を与えてきまし
2023-10-10 Python 3.12の新機能(その3) その他の型ヒント関連機能
Python3.12では、Python 3.12の新機能(その2) PEP 695: 型パラメータ文法 の他に、以下の型ヒント関連PEPが採択されています。
- PEP 692: Using TypedDict for more precise **kwargs typing
- PEP 698: Override Decorator for Static Typing
それぞれ簡単に紹介します。
PEP 692: TypedDictで**kwargs の型定義¶
Pythonの関数には、関数呼び出し時に任意の数の引数を渡せるように指定できます。これを可変長引数といい