2026年7月23日(木)掲載 2,900本日 30
HN323153

Python 3.15の隠れた注目機能:知っておくべきアップデートまとめ

Python 3.15: features that didn't make the headlines

rbanffy2か月前

議論

11
0rbanffyスレ主3232か月前

Python 3.15には、大々的に取り上げられなかったものの、エンジニアにとって実用性の高い改良や機能がいくつか盛り込まれています。本稿では、今後の開発効率を少しだけアップさせてくれるような、影の主役とも言える変更点にフォーカスして解説します。

1brianwawok2か月前

10年間ずっとPythonにどっぷり浸かっていて、書くのが楽しかった。でも、AIコードボットが当たり前の時代になって、より速い言語へ移行するために、今年だけで10万行以上のコードを削除したよ。最近はGoに移行することがほとんどかな。

2kokada2か月前

この例からすると:

    lazy from typing import Iterator

    def stream_events(...) -> Iterator[str]:
        while True:
            yield blocking_get_event(...)

    events = stream_events(...)

    for event in events:
        consume(event)

Pythonについに「遅延インポート」が実装されたの?この変更を見逃していたみたい。これもPython 3.15かそれ以前からの機能?

4kwon-young2か月前

Python 3.15でイテレータ同期プリミティブが追加されたのはいいことだね:https://docs.python.org/3.15/library/threading.html#iterator... (https://docs.python.org/3.15/library/threading.html#iterator-synchronization) 。これは、まさに同じことをスレッド/プロセス+ジェネレータ+キューで行っている私のthreaded-generatorパッケージをうまく補完してくれそうだ:https://pypi.org/project/threaded-generator/ (https://pypi.org/project/threaded-generator/)

6syedMohib452か月前

スレッドセーフなイテレータだって?本当にまだこの話題で盛り上がってるの?

lazy from typing import Iterator

def stream_events(...) -> Iterator[str]:
while True:
yield blocking_get_event(...)

events = stream_events(...)

for event in events:
consume(event)

7drchaim2か月前

ああ、愛しのPython、15年近く君を書いたよ。恋しいけれど、もう書くことはない――君のせいじゃない、人生が変わったんだ。

8jwineinger2か月前

Counterの例の一つが間違っているね。3.13と3.15.0aの両方でテストしてみた。

  >>> from collections import Counter 
  >>> c = Counter(a=3, b=1)  
  >>> d = Counter(a=1, b=2)   
  >>> c-d  
  Counter({'a': 2})
9xg152か月前

イテレータ、非同期関数、非同期イテレータは、標準的な関数とはセマンティクスが異なるため、ここではうまく機能しない。それらを呼び出すと、直ちにジェネレータオブジェクト、コルーチン関数、非同期ジェネレータオブジェクトがそれぞれ返されてしまう。そのため、デコレータはラップしているもの全体のライフサイクルではなく、即座に完了してしまう。

これは私が何度も遭遇した厄介な問題であり、通常のデコレータでもよくある問題だ。しかし、3.15でこれが変更され、ContextDecoratorがラップする関数の型を確認し、デコレータが全ライフサイクルをカバーするように保証されるようになった。

その変更のアイデアはとてもいいと思う。でも「オプトインの仕組み」なしでこれをやるのは、既存の使用サイトの動作を非常に微妙に変えてしまうので、ちょっと危ない気もする。

これは「キーボードのスペースキーを温める」みたいな状況に似てるかも。古い壊れた方法でデコレータをわざわざ使う人はいないだろうけど、もし誰かが実際にやっていたら、予期せず何かが壊れるかもしれないし。