en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels 👉 If you want to see the tag, subscribe

Zen of Python

Zen of Python

Open in Telegram

Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL

Show more

📈 Analytical overview of Telegram channel Zen of Python

Channel Zen of Python (@zen_of_python) in the Russian language segment is an active participant. Currently, the community unites 18 730 subscribers, ranking 6 999 in the Technologies & Applications category and 35 209 in the Russia region.

📊 Audience metrics and dynamics

Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 18 730 subscribers.

According to the latest data from 26 October, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -87 over the last 30 days and by -8 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 6.18%. Within the first 24 hours after publication, content typically collects 4.24% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 1 158 views. Within the first day, a publication typically gains 795 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 1.
  • Thematic interests: Content is focused on key topics such as github, rust, pip, api, install.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
“Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL”

Thanks to the high frequency of updates (latest data received on 27 October, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

18 730
Subscribers
-824 hours
-367 days
-8730 days
Posts Archive
Два класса с именем Helper в разных модулях затирают друг другу __value Name mangling переименовывает __value в _Helper__value только по имени класса, без учёта модуля. Если два независимых класса Helper хранят __value, а кто-то наследуется от обоих, поле оказывается общим: один кладёт строку, другой число, сложение падает с TypeError. Именно этот пример сейчас обсуждают на форуме разработчиков Python в споре о настоящей приватности; рецепт на сегодня: одно подчёркивание и композиция вместо двойного наследования. В нашем канале «Точка входа» разобрали подробнее. @zen_of_python

CPython официально поддерживает RISC-V как платформу третьего уровня Работа шла несколько месяцев, и теперь RISC-V официально поддержан в CPython как tier 3. Для питониста это означает, что сборки под эту архитектуру перестали быть самодеятельностью и попали в зону ответственности проекта. RISC-V это открытая система команд: в отличие от x86 и ARM, она развивается как открытый стандарт, и реализовать её может кто угодно. Экосистема за последние годы выросла заметно. Третий уровень означает поддержку без гарантий на каждый релиз: сборка проверяется, но падение на этой платформе не блокирует выпуск. Для продакшена на RISC-V это ещё не зелёный свет, а сигнал, что можно начинать проверять свои колёса. #cpython

Почему CPython остаётся стековой машиной, а её соседи уходят на регистры Байткод CPython стековый: a + b это LOAD_FAST a, LOAD_FAST b, BINARY_OP. Максим Шевалье-Буавер, в прошлом автор YJIT для Ruby, измерила на своём языке Plush, сколько стоит такая модель: после перехода на регистровый байткод, где то же сложение одна инструкция с тремя операндами, медианное ускорение по тестам составило 2,07 раза, максимальное 3,37, а тесты сборщика мусора не изменились вовсе. Замеры честные: 11 чередующихся запусков, медиана, повтор набора; в сравнении участвовал и CPython 3.14.6, но автор оговаривает разную семантику языков. Вывод один: в интерпретаторе главный рычаг это число инструкций на диспетчеризацию. Как устроено новое 64-битное слово инструкции и почему Lua ограничена 255 регистрами на фрейм, на сайте. @zen_of_python

После обновления на Polars 2.0 ваши join и group_by могут вернуть строки в другом порядке Ричи Винк выпустил первый release candidate Polars 2.0 и сам называет релиз скучным: новых функций почти нет, мажорную версию подняли, чтобы избавиться от старых решений и поменять дефолты. Главная смена дефолта: все запросы LazyFrame теперь идут через потоковый движок, который обрабатывает данные порциями. В совокупности авторы ожидают «легко в 5 раз быстрее» и заметно меньше памяти. Плата за это в том, что порядок строк после операций больше не гарантирован. Если код где-то молча полагался на порядок после join или group_by, он сломается тихо. К релизу выложен полный migration guide, и заглянуть в него стоит до того, как обновитесь.

Что происходит между np.add(a, b) и SIMD-циклом: разбор пути одного вызова np.add не функция Python, а объект C-типа numpy.ufunc с 22 сигнатурами в np.add.types. Файт Хеллер прослеживает, что происходит с вызовом для dd->d, двух массивов float64. 🔘 ufunc_generic_vectorcall и ufunc_generic_fastcall проверяют overrides и конвертируют аргументы; 🔘 promote_and_get_ufuncimpl и resolve_descriptors выбирают реализацию и dtype результата; 🔘 реестр встроенных ufunc порождается скриптом generate_umath.py в файл __umath_generated.c; для add bool-цикл переиспользует logical_or, а object-массивы уходят в PyNumber_Add; 🔘 циклы собираются в нескольких вариантах под наборы инструкций (X86_V2, X86_V3, NEON, ASIMD), и нужный выбирается при импорте. Какой вариант реально работает у вас, покажет numpy.lib.introspect.opt_func_info(func_name="add", signature="float64"). @zen_of_python

Polars 2.0 RC: после обновления ваши join и group_by могут вернуть строки в другом порядке Polars выпустила первый release candidate версии 2.0. Автор библиотеки Ричи Винк пишет, что релиз должен быть «скучным»: новых функций почти нет, меняются дефолты. Главный из них: LazyFrame.collect() теперь идёт через потоковый движок, который обрабатывает данные порциями. Авторы ожидают, что в совокупности он «легко в 5 раз быстрее», но порядок строк после join, group_by и unpivot он не гарантирует. Если код молча полагался на порядок, например брал head(1) после группировки, добавьте maintain_order (у join и group_by) или явный sort. Старый движок возвращается через pl.Config.set_engine_affinity("in-memory"). Вторая часть релиза про то, чтобы падать сразу, а не через 20 минут работы пайплайна. is_in между Int64 и Float64 больше не округляет молча: 9007199254740993 раньше превращался в 9007199254740992 и давал ложное совпадение, теперь InvalidOperationError. Горизонтальный concat таблиц разной высоты бросает ShapeError вместо заполнения null. Вместо cast(pl.Date) только .str.to_date(), вместо каста целых в Enum только .cat.to(). В CSV без заголовка колонки теперь нумеруются с column_0. Большинство удалённых методов отвечают AttributeRemovedError с подсказкой, чем заменить. Поставить в отдельное окружение: pip install polars==2.0rc1. Чек-лист, что проверить до финального релиза, собрали на сайте. @zen_of_python

PyTorch 2.14 уже собран под Python 3.15, но компилировать модели под ним пока нельзя PyTorch Foundation выпустила 2.14: 2995 коммитов от 487 участников. 🔘 wheels для Python 3.15 и free-threaded 3.15t есть для Linux, Windows и macOS, но лежат на download․pytorch․org, не на PyPI; 🔘 torch.compile под 3.15 в этом релизе не работает и завершается RuntimeError, только eager; 🔘 torch.switch обобщает torch.cond на несколько веток, torch.while_loop захватывается CUDA Graphs; 🔘 удалены torch.cholesky, torch.qr, параметр профилировщика use_cuda; acc_policy="balanced" теперь ValueError; 🔘 у скалярного clamp градиент на границе стал 0 вместо 1, модели с клиппингом могут учиться иначе. Сам Python 3.15 выходит 1 октября, второй rc был 1 сентября, так что проверить совместимость кода можно уже сейчас, а замеры с компиляцией придётся отложить. Чек-лист обновления на сайте. @zen_of_python

Повторите 44% на ARC-AGI-1 на PyTorch за полтора часа и 67 центов ARC-AGI-1 это тысяча задач на цветных сетках, где по паре п
Повторите 44% на ARC-AGI-1 на PyTorch за полтора часа и 67 центов ARC-AGI-1 это тысяча задач на цветных сетках, где по паре примеров нужно угадать правило. Митхил Вакде обучил трансформер на 75 млн параметров с нуля и получил 44% на публичном eval за 1,5 часа на RTX 5090. Код открыт под MIT. 🔘 задачи превращаются в последовательности токенов, модель учится авторегрессионно; 🔘 обучение во время теста: на train- и eval-задачах при скрытых ответах; 🔘 обучаемые 3D RoPE для двумерных сеток и отдельный additive embedding на задачу; 🔘 8 слоёв, SwiGLU вместо GELU, RMSNorm вместо LayerNorm, flash attention с varlen на обучении, flex attention на inference; 🔘 удаление обучения на входных токенах подняло результат с 40% до 44%, автор пишет «я не понимаю почему»; 🔘 нужны CUDA выше 12.8, лучше 13.0; на ARC-2 та же модель даёт 7%. Репозиторий mdlARC, ограничения замера разобрали на сайте. @zen_of_python

uv 0.12.9 закрыл проблему с памятью при чтении чужих wheel и добавил CPython 3.15.0rc2 Релиз 1 сентября. Из важного: 🔘 обновлён async_http_range_reader до 0.11.1: закрыта потенциальная проблема memory-safety при чтении метаданных из недоверенных wheel по HTTP range; 🔘 чувствительные заголовки больше не утекают при редиректах между зонами аутентификации, включая смену схемы на том же хосте; 🔘 секреты в подписанных URL вырезаются из диагностики повторов; 🔘 новые флаги --no-locked и --no-frozen отключают режимы из UV_LOCKED и UV_FROZEN на один вызов, а --locked, --frozen, --check теперь важнее переменных окружения; 🔘 холодная установка wheel быстрее: каждый ZIP распаковывается в одной блокирующей задаче с переиспользованием буферов; 🔘 добавлен CPython 3.15.0rc2. Если ставите пакеты из сторонних индексов, обновляйтесь. Заметки к релизу. @zen_of_python

Вышел Python 3.15.0rc2: до финала 1 октября осталось проверить свои пакеты Второй релиз-кандидат опубликован 1 сентября: 144 исправления от 76 участников после rc1. Главное в нём то, чего уже не будет: ABI заморожен, и wheels, собранные на rc2, будут работать с финальной 3.15 и всеми её патч-версиями. Значит, мейнтейнеры расширений на C могут собирать и выкладывать колёса под 3.15 уже сейчас. 🔘 экспериментальный JIT даёт в среднем 8–9% к обычному интерпретатору на x86-64 Linux и 12–13% к tail-calling-интерпретатору на AArch64 macOS, разработчики просят прогнать на нём свои нагрузки и сообщить о регрессиях 🔘 в прод rc2 ставить не рекомендуют, для CI и тестов совместимости он и предназначен Ставится через uv python install 3.15.0rc2 или с python.org. Что означает заморозка ABI, сколько даёт JIT и что проверить мейнтейнеру разобрали на сайте. @zen_of_python

Python Tutor прокручивает вашу программу по шагам прямо в браузере Результат неверный, а где именно состояние поехало — непонятно, и код обрастает print. Python Tutor запускает программу на pythontutor.com и позволяет ходить по шагам вперёд и назад: видно значения переменных, как меняются списки и словари, какие объекты друг на друга ссылаются, какая функция выполняется и откуда её вызвали. Ставить ничего не нужно, регистрации нет, код вставляется прямо на странице. Кроме Python поддерживаются Java, C, C++ и JavaScript. С 2010 года сервисом воспользовались больше 25 млн человек, он построил свыше 500 млн визуализаций. В нашем канале «Точка входа» разобрали подробнее.

В документации Python появилась таблица цены каждой операции со встроенными типами Сколько стоит l.insert(), почему l.pop() д
В документации Python появилась таблица цены каждой операции со встроенными типами Сколько стоит l.insert(), почему l.pop() дешёвый, а l.pop(0) нет и чем x in set отличается от x in list — раньше за этим ходили в вики или в исходники CPython. Теперь в документации 3.16 есть отдельная страница: сложность операций для list, tuple, dict, set, str, memoryview и range в нотации O-большое, с оговорками о том, где поведение зависит от реализации CPython. Такое сохраняют: половина вопросов «почему тормозит» на ревью и собеседованиях закрывается этой таблицей. Страница в документации @zen_of_python

Ruff замечает синхронный HTTP-запрос внутри async-функции Линтер Ruff получил проверку синхронных HTTP-запросов внутри асинхронных функций. Она показывает место, где один обычный вызов может остановить событийный цикл всего сервиса. Новое правило ASYNC210 вошло в версию 0.16.5. Такая ошибка легко прячется в коде: функция объявлена через async, однако блокирующий запрос задерживает выполнение остальных задач. Из-за этого асинхронный сервис незаметно теряет ожидаемое поведение под нагрузкой. В preview появились селекторы категорий правил. С ними можно включать целые группы проверок вместо перечисления отдельных кодов. Релиз также уточняет две существующие проверки. DTZ007 перестал ругаться на безопасные цепочки strptime с таймзоной. Отдельно SIM401 теперь учитывает побочные эффекты в аргументах по умолчанию у lambda. @zen_of_python

uv экономит место в кэше и проверяет архив до распаковки Менеджер пакетов uv получил две правки для кэша. Одна сокращает число одинаковых распакованных файлов, другая останавливает архив с неверным хешем до записи его содержимого. Изменения вошли в версию 0.12.7. Новая preview-функция content-addressed-cache дедуплицирует распакованные wheel по содержимому. Одинаковые файлы теперь могут храниться в одной копии вместо десятка повторов в кэше. Проверка архивов с исходниками тоже сдвинулась раньше. Если хеш не совпадает с ожидаемым, uv отклоняет архив до попадания распакованных файлов в кэш. В прежнем порядке повреждённый или подменённый архив успевал там осесть. Ещё релиз добавляет разрешение зависимостей для платформ s390x, ppc64le и loongarch64. К 30 августа релиз отметили реакциями 22 человека. @zen_of_python

Django опросил 3500 разработчиков: ядро скучное, всё вокруг него бурлит 28 августа Django Software Foundation и PyCharm опубликовали ежегодный The State of Django: почти 3500 ответов из более чем 40 стран, от студентов до людей с десятилетиями стажа. Ядро держится на месте, и авторы называют это комплиментом: зрелое, но не застывшее. PostgreSQL держит 76–79% пятый год подряд, штатный шаблонизатор — около 80%, а 43% опрошенных уже перешли на Django 6.0 через несколько месяцев после выхода. Меняется обвязка. Совсем без ИИ-инструментов работают 10% опрошенных; из тех, кто ими пользуется, 58% делают это ежедневно и ещё 27% несколько раз в неделю. 🔘 лидера среди инструментов нет: Claude Code — 35%, ChatGPT — 33%, GitHub Copilot — 23%, а интерфейсы делятся почти поровну между браузером, IDE и командной строкой; 🔘 56% пользователей ИИ применяют его только для советов в чате; 🔘 работа с агентами остаётся поднадзорной: 59% просят сгенерировать код и вносят правки сами, 44% разрешают править файлы и запускать команды по прямому указанию, и только 27% дают довести до конца многошаговую задачу; 🔘 официальная документация Django остаётся главным источником обучения с 67%, но ИИ-инструменты уже вторые с 51% — впереди YouTube, чтения исходников и Stack Overflow. @zen_of_python

В стандартной библиотеке 3.15 появился профилировщик, который цепляется к работающему процессу по PID Профиль с прода снять обычно нечем: profiling.tracing инструментирует каждый вызов функции и заметно тормозит программу, а перезапускать сервис ради замера никто не даст. Из-за этого «тормозит в бою, на стенде не воспроизводится» годами оставалось без ответа. В Python 3.15 добавили profiling.sampling, он же Tachyon: семплирующий профилировщик, который периодически снимает стеки уже запущенного процесса. Код менять не нужно, перезапускать не нужно, накладные расходы околонулевые. Частота семплирования — до 1 000 000 Гц, на момент добавления это самый быстрый семплирующий профилировщик для Python. 🔘 куда целиться: attach по PID к живому процессу, run — скрипт с самого старта, run -m — модуль, dump — одноразовый снимок стеков всех потоков, чтобы понять, на чём висит зависший процесс (с --async-aware — по всем задачам asyncio); 🔘 что мерить: --mode wall по умолчанию считает календарное время вместе с ожиданием ввода-вывода, --mode cpu — только счёт, --mode gil показывает, какой поток держит GIL, --mode exception берёт пробы только с потоков с активным исключением; 🔘 форматы вывода: --pstats, --collapsed для FlameGraph и speedscope, --flamegraph — самодостаточный HTML на D3.js, --gecko для Firefox Profiler, --heatmap — построчная тепловая карта по файлам; 🔘 есть живой TUI в духе top через --live и профилирование до уровня байткода через --opcodes. Авторы — Пабло Галиндо и Ласло Кишш Коллар. Раздел в What's New описывает все режимы; финал 3.15 ожидается в октябре, сейчас доступен rc1. @zen_of_python

Отключение GIL ускоряет не всё и берёт плату памятью. Хосе Даниэль Монтойя Саласар сравнил сборки Python 3.14.2 с GIL и без н
Отключение GIL ускоряет не всё и берёт плату памятью. Хосе Даниэль Монтойя Саласар сравнил сборки Python 3.14.2 с GIL и без него на четырёх классах нагрузок, меряя время, загрузку ядер, память и потраченную энергию. На распараллеливаемых задачах с независимыми данными свободнопоточная сборка сокращает время до 4 раз, и энергия падает примерно во столько же. На последовательных выигрыша нет вовсе, а энергии тратится на 13–43 процента больше. Там, где потоки часто читают и меняют одни и те же объекты, ускорение меньше или уходит в минус из-за конкуренции за блокировки. Энергия во всех замерах пропорциональна времени: снятие GIL почти не меняет мощность, даже когда загрузка ядер вырастает в десять раз. Память растёт почти везде, виртуальная заметнее физической. Причины — блокировка на каждый объект, дополнительные механизмы потокобезопасности в рантайме и новый аллокатор. @zen_of_python

Актуальный openai — 3.5.0 — не тянет за собой httpx. В зависимостях SDK стоит httpx2: отдельный пакет, в который команда Pydantic перенесла сопровождение httpx, потому что оригинал последнее время почти не развивался, а сам он, по формулировке Pydantic, «лежит в критическом пути слишком многих продакшен-систем». Если клиент создаётся без своего http_client, вызовы, разбор ответов, стриминг, ретраи и числовые таймауты работают как раньше. Смотреть стоит в три места. 🔘 import httpx в вашем коде упадёт, если пакет приезжал только вместе с SDK и никто больше его не ставит. Лечится строчкой httpx в зависимостях или переносом импортов на httpx2. 🔘 Собственный http_client собирается из нового пакета — DefaultHttpx2Client, httpx2.Timeout, httpx2.HTTPTransport. 🔘 Проверка TLS-сертификатов переехала с certifi на системное хранилище доверенных корней, и сам certifi SDK тоже больше не ставит. Третий пункт бьёт по проду: минимальный образ без системных CA-сертификатов, корпоративный прокси, чей корень лежал только в certifi, свой доработанный бандл — во всех этих случаях верификация может начать падать. Поднимается либо установкой CA в системное хранилище, либо явным бандлом через SSL_CERT_FILE или каталогом в SSL_CERT_DIR (обе переменные читаются при trust_env=True, это значение по умолчанию), либо своим ssl.SSLContext в параметре verify. Инструкция по миграции лежит в репозитории SDK — там же про изменения в исключениях транспорта, event hooks и моках через RESPX.

Polars 1.44.0 вышел 24 августа, и основная работа в нём пришлась на SQL-слой и на Iceberg. 🔘 Общие табличные выражения теперь кэшируются, а cross join, который раньше появлялся при декорреляции подзапросов в предикатах равенства, устраняется. Неквалифицированные предикаты соединения опускаются до inner join. 🔘 В SQL добавили коррелированные подзапросы с IN и квантифицированные сравнения с подзапросом. 🔘 Нативный scan_iceberg понимает эволюцию схемы, deletion vectors третьей версии и свойства снапшотов, а пути к объектному хранилищу принимает напрямую. 🔘 join_where поддерживает больше типов соединения, появились скалярные произведения для массивов фиксированного размера и метод struct.drop(). 🔘 При разрешении схемы в __arrow_c_stream__ Polars освобождает GIL. Отдельно починили порчу данных во вложенных LargeList при работе через Arrow. 🔘 Параметр rechunk у функций чтения и сканирования вместе с Expr.rechunk() объявлены устаревшими. Чисел по скорости в релизе нет, так что заявлять конкретное ускорение не станем. @zen_of_python

EVE Online переезжает с Python 2.7 на Python 3. Прошлый раз версию интерпретатора в игре меняли в 2010 году. CCP рассказала 25 августа, из чего эта работа состоит. Кодовая база — 2,4 млн строк Python примерно в 20 тысячах файлов, поверх 23 лет данных живых игроков: персонажи, навыки, имущество, ISK. Часть кода написана по правилам Python 2.3 и 2.5, которые тройка уже не принимает. Первый этап — сделать код совместимым сразу с обеими версиями, продолжая запускаться на 2.7; помогают python-future и 2to3. При компиляции обоими интерпретаторами 95,9% файлов собрались сразу. Осталось около 3300 строк с явными несовместимостями: примерно 1500 старых print, 800 литералов вида 123L, 600 старых форм except и 50 операторов <>. Опаснее другое: нашлось около 20 тысяч строк, синтаксически корректных в обеих версиях, но работающих по-разному. Классика — 1 / 2, которое даёт 0 в Python 2 и 0.5 в Python 3. Отдельное ограничение — сервер Tranquility должен оставаться доступным 23,75 часа из каждых 24. @zen_of_python