Zen of Python
Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL
Показати більше📈 Аналітичний огляд Telegram-каналу Zen of Python
Канал Zen of Python (@zen_of_python) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 18 730 підписників, посідаючи 6 999 місце в категорії Технології та додатки та 35 209 місце у регіоні Росія.
📊 Показники аудиторії та динаміка
З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 18 730 підписників.
За останніми даними від 26 жовтня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -87, а за останні 24 години на -8, загальне охоплення залишається високим.
- Статус верифікації: Не верифікований
- Рівень залученості (ER): Середній показник залученості аудиторії становить 6.18%. Протягом перших 24 годин після публікації контент зазвичай збирає 4.24% реакцій від загальної кількості підписників.
- Охоплення публікацій: В середньому кожен допис отримує 1 158 переглядів. Протягом першої доби публікація в середньому набирає 795 переглядів.
- Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 1.
- Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як github, rust, pip, api, install.
📝 Опис та контентна політика
Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“Полный Дзен Пайтона в одном канале
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site
Регистрация в перечне РКН: https://tprg.ru/xZOL”
Завдяки високій частоті оновлень (останні дані отримано 27 жовтня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.
__value
Name mangling переименовывает __value в _Helper__value только по имени класса, без учёта модуля. Если два независимых класса Helper хранят __value, а кто-то наследуется от обоих, поле оказывается общим: один кладёт строку, другой число, сложение падает с TypeError. Именно этот пример сейчас обсуждают на форуме разработчиков Python в споре о настоящей приватности; рецепт на сегодня: одно подчёркивание и композиция вместо двойного наследования.
В нашем канале «Точка входа» разобрали подробнее.
@zen_of_pythona + 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_pythonLazyFrame теперь идут через потоковый движок, который обрабатывает данные порциями. В совокупности авторы ожидают «легко в 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_pythonjoin и 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_pythontorch.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_pythonasync_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_pythonuv python install 3.15.0rc2 или с python.org.
Что означает заморозка ABI, сколько даёт JIT и что проверить мейнтейнеру разобрали на сайте.
@zen_of_pythonprint. Python Tutor запускает программу на pythontutor.com и позволяет ходить по шагам вперёд и назад: видно значения переменных, как меняются списки и словари, какие объекты друг на друга ссылаются, какая функция выполняется и откуда её вызвали.
Ставить ничего не нужно, регистрации нет, код вставляется прямо на странице. Кроме Python поддерживаются Java, C, C++ и JavaScript. С 2010 года сервисом воспользовались больше 25 млн человек, он построил свыше 500 млн визуализаций.
В нашем канале «Точка входа» разобрали подробнее.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_pythonASYNC210 вошло в версию 0.16.5. Такая ошибка легко прячется в коде: функция объявлена через async, однако блокирующий запрос задерживает выполнение остальных задач. Из-за этого асинхронный сервис незаметно теряет ожидаемое поведение под нагрузкой.
В preview появились селекторы категорий правил. С ними можно включать целые группы проверок вместо перечисления отдельных кодов.
Релиз также уточняет две существующие проверки. DTZ007 перестал ругаться на безопасные цепочки strptime с таймзоной. Отдельно SIM401 теперь учитывает побочные эффекты в аргументах по умолчанию у lambda.
@zen_of_pythoncontent-addressed-cache дедуплицирует распакованные wheel по содержимому. Одинаковые файлы теперь могут храниться в одной копии вместо десятка повторов в кэше.
Проверка архивов с исходниками тоже сдвинулась раньше. Если хеш не совпадает с ожидаемым, uv отклоняет архив до попадания распакованных файлов в кэш. В прежнем порядке повреждённый или подменённый архив успевал там осесть.
Ещё релиз добавляет разрешение зависимостей для платформ s390x, ppc64le и loongarch64. К 30 августа релиз отметили реакциями 22 человека.
@zen_of_pythonprofiling.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_pythonopenai — 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.IN и квантифицированные сравнения с подзапросом.
🔘 Нативный scan_iceberg понимает эволюцию схемы, deletion vectors третьей версии и свойства снапшотов, а пути к объектному хранилищу принимает напрямую.
🔘 join_where поддерживает больше типов соединения, появились скалярные произведения для массивов фиксированного размера и метод struct.drop().
🔘 При разрешении схемы в __arrow_c_stream__ Polars освобождает GIL. Отдельно починили порчу данных во вложенных LargeList при работе через Arrow.
🔘 Параметр rechunk у функций чтения и сканирования вместе с Expr.rechunk() объявлены устаревшими.
Чисел по скорости в релизе нет, так что заявлять конкретное ускорение не станем.
@zen_of_pythonpython-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