TGViewer
Питонические атаки Питонические атаки @pythonic_attacks · 1.15K subscribers
Post #558 1.77K
Ещё про изменения, которые хотят попасть в 3.12.

Недавно опубликовали PEP 709 – Inlined comprehensions про оптимизацию list, dict & set comprehension'ов. Кстати, как вы называете это по-русски? Списковые включения, словарные включения? Странно звучит. Буду писать "компрехеншн", как обычно говорю.

Сейчас эти компрехеншены создают служебную функцию, которая сразу же вызывается один раз, после чего удаляется сборщиком мусора. Эта функция нужна для того, чтобы изолировать внутренние переменные компрехеншена, чтобы они не были доступны извне. Скорее всего, так было сделано, потому что так было проще всего — переиспользовались готовые, отлаженные механизмы языка.

Идея оптимизации состоит в том, чтобы избежать создания этой одноразовой функции, а изоляции внутренних переменных компрехеншена достигать другими способами. Грубо говоря, обычным удалением этих переменных по завершению работы. И так получается быстрее — микробенчмарки компрехеншенов показывают ускорение работы аж в 2 раза, а в среднем от кода с компрехеншенами можно ожидать ускорение на уровне 11%. Это создание и вызов одноразовой функции с вытекающими операциями над стэком вызовов оказались довольно дорогими.

Такая оптимизация поменяет некоторые детали, на которые, скорее всего, мало кто сильно рассчитывает. Например, стектрейсы от ошибок, возникших в теле компрехеншена, станут на 1 этаж короче из-за отсутствия этой служебной функции.

Оптимизация затронет только компрехеншены, вложенные в функции. Глобальные компрехеншены пока решили не трогать — там особый случай. Генераторные выражения (generator expressions) тоже пока не оптимизируются. Короче, работают по принципу "low effort, high reward".

Автор пропозала работает в Instagram. Видимо, они постепенно выносят удачные идеи из своего performance-oriented форка интерпретатора Cinder в апстрим.

PEP на данный момент находится в статусе черновика. Думаю, что будет принят.
  • 🆒 21
  • 👍 13
  • 🔥 2
  • 🦄 2
  • 🤔 1
More from @pythonic_attacks
  1. May 24, 2026GPT-5.5 по дефолту предпочитает использовать uv. Совпадение? Абсолютно точно нет. Логично…
  2. Mar 19, 2026Новость вызывает столько противоречивых мыслей, что я даже прерву радио молчание. С одной…
  3. Mar 19, 2026https://openai.com/index/openai-to-acquire-astral/ & https://astral.sh/blog/openai Это не…
  4. Nov 17, 2025Ну что же.. Мы совместно с Эммой Смит опубликовали Pre-PEP о добавлении Раста в CPython. В…
  5. May 19, 2025Вышел трейлер документалки о Python. Что-то на уровне Marvel, возможно даже выше https://w…
  6. May 15, 2025All good things come to an end Что ж, скажем Майкрософту спасибо, что 4 года содержал кома…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →