ch
Feedback
Zen of Python

Zen of Python

前往频道在 Telegram

Полный Дзен Пайтона в одном канале Разместить рекламу: @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) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 19 271 名订阅者,在 技术与应用 类别中位列第 6 967,并在 俄罗斯 地区排名第 35 078

📊 受众指标与增长动态

невідомо 创建以来,项目保持高速增长,吸引了 19 271 名订阅者。

根据 04 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 19,过去 24 小时变化为 7,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 12.73%。内容发布后 24 小时内通常能获得 5.61% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 2 454 次浏览,首日通常累积 1 082 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 11
  • 主题关注点: 内容集中在 github, rust, pip, api, install 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL

凭借高频更新(最新数据采集于 05 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

19 271
订阅者
+724 小时
+157
+1930
帖子存档
Репозиторий anthropics/skills — самый популярный Python-репозиторий на GitHub прямо сейчас. +1400 звёзд в день, 50 тыс. уже набежало. ➡️ Что такое Skills Skills — это папки с инструкциями и скриптами, которые Claude динамически подгружает для выполнения специализированных задач. По сути, плагины для ИИ: вместо того чтобы каждый раз объяснять модели, как работать с вашими процессами, вы описываете это один раз в файле. Примеры: создание документов с учётом правил компании, анализ данных по специфическим воркфлоу, генерация MCP-серверов, тестирование веб-приложений. ➡️ Как устроено Skill — это YAML с названием, описанием и markdown-инструкциями. Можно указать примеры использования и ограничения. Claude читает это при активации и следует описанным правилам.
---
name: my-skill-name
description: What this skill does
---
# Instructions for Claude...
➡️ Зачем это вам Если используете Claude для повторяющихся задач — Skills позволяют один раз описать процесс и использовать повторно. Документные skills (PDF, DOCX, XLSX) уже готовы. Для собственных — есть шаблон и примеры. 📎 Репозиторий @zen_of_python

Вышел pandas 3.0: строки теперь хранятся через PyArrow (до 70% экономии памяти, до 13x быстрее), а Copy-on-Write стал обязательным. Что сломается 🔘Цепочечное присваивание больше не работает:
# Было: работало с warning'ом
df["foo"][df["bar"] > 5] = 100

# Стало: молча НЕ работает
# Правильно:
df.loc[df["bar"] > 5, "foo"] = 100
🔘Проверки dtype:
# Было
if df['col'].dtype == object: ...

# Стало
if pd.api.types.is_string_dtype(df['col']): ...
Как мигрировать 1️⃣Обновитесь до pandas 2.3, уберите warnings 3️⃣Включите в тестах: pd.options.future.infer_string = True 3️⃣Найдите dtype == object и цепочечные присваивания 4️⃣Обновляйтесь до 3.0 Требования: Python 3.11+, NumPy 1.26.0+, PyArrow 13.0.0+ Для production лучше подождать пару недель — релиз свежий. 📎 Changelog, GitHub @zen_of_python

Один разработчик реализовал bytes.replace() из Python на CUDA — для обработки многогигабайтных файлов прямо на GPU без передачи данных на CPU. Бенчмарки (RTX 3090) 🔘1 MB: 1,09x (почти одинаково) 🔘5 MB: 1,80x 🔘50 MB: 3,43x 🔘100 MB: 4,37x Среднее ускорение: 3,45x, пропускная способность: 0,79 GB/s ​ Ключевые фичи 🔘Точная семантика Python (leftmost, non-overlapping replacements) 🔘Streaming mode — файлы больше VRAM обрабатываются чанками 🔘Session API — несколько замен подряд без переинициализации 🔘Thread-safe ​ Пример
from cuda_replace import CReplaceLib

lib = CReplaceLib()
result = lib.unified(data, b"pattern", b"replacement")

# Для больших файлов
cleaned = lib.gpu_streaming(huge_data, b"old", b"new", chunk_size=256*1024*1024)
➡️ Зачем это нужно Автор делал GPU-компрессию и хотел убрать лишние трансферы между CPU и GPU. Другие применения: санитизация логов, обработка сетевых пакетов, любые задачи с поиском/заменой в больших бинарных данных. И давайте признаем, это просто круто, search-replace на CUDA блин :) ​ 📎 Код на GitHub @zen_of_python

Уютный канал про MicroPython и AI Канал ведёт Артём — инженер, который просто делится тем, как на самом деле устроена его раб
Уютный канал про MicroPython и AI Канал ведёт Артём — инженер, который просто делится тем, как на самом деле устроена его работа: как он исследует новые инструменты, какие нейросети использует в задачах и какие делает выводы. Внутри много личного опыта: 🔘путь от админа до инженера; 🔘как нейронки становятся испытанием для нервной системы; 🔘итоги большого личного исследования разных ИИ-инструментов. Это не поток советов и не обучающий курс, скорее увлекательные заметки инженера и новости из мира нейросетей, которыми интересно делиться с коллегами. Точно стоит подписаться, если вам близки Python, эксперименты и вдумчивый подход к ИИ.

Бывший CTO поделился тестом, который за 15 секунд отсеивал половину кандидатов. И это не фигура речи, реально 53% ошибались. Я специально спрячу объяснение за спойлер, чтобы вы могли перейти по ссылке и попробовать решить задачу. Осуждать никого не будем, просто проверьте себя. Если ваш ответ 1, то поздравляю, вы быстро в уме разобрали код и поняли логику. Если -11, то значит вы скопировали код в ChatGPT или интерпретатор и поленились делать в уме. Так же поступают в среднем 50% кандидатов. Дело в том, что в коде спрятан знак =, который появляется только при копировании и условие меняется на >= 3. Ну и ответ, конечно, тоже. И в чём смысл? Не то чтобы копировать — это прям плохо. Смысл скорее в том, что для простой задачи быстрее прогнать код в голове, чем открывать терминал. Если кандидат не может выполнить три итерации цикла мысленно — это сигнал. Автор признаёт: метод не идеальный, бывают false negatives. Но он вдвое сокращает время на обработку откликов. @zen_of_python

На Reddit обсудили, с какими инструментами питонисты стартуют новые проекты в 2026. В треде 170+ комментариев, подведу краткие итоги. uv + ruff + httpx + pytest — этот стек набрал больше всего голосов. Poetry и venv уходят в прошлое, uv забирает всё: и виртуалки, и зависимости, и запуск. А вот в тайп-чекинге единства нет. Одни ждут pyright, другие пробуют ty или pyrefly. Ruff сам по себе типы не проверяет, нужен отдельный инструмент. ​ Что ещё упоминают 🔘pydantic — почти как стандарт для валидации 🔘direnv — автоматическая активация окружения при входе в папку 🔘pandas остаётся дефолтом, но для больших данных смотрят на PySpark/Polars Для старта нового проекта
uv init myproject
cd myproject
uv add --dev ruff pytest
Это готовый рецепт, которого пока что придерживается большинство в сообществе. А что вы используете? Кто-то уже пробовал ty? @zen_of_python

Niquests — это современная версия requests: быстрее и с поддержкой новых фич протокола HTTP/2 и HTTP/3. Автор позиционирует вообще как самую быструю и показывает бенчмарки с обгоном httpx и aiohttp по количеству запросов в секунду. Основная фишка — вместо кучи соединений используется настоящий HTTP/2+ multiplexing — много запросов через несколько установленных коннектов. На больших нагрузках это решает. По сути это то, как делают запросы современные браузеры. ​Drop-in замена для requests — тот же API, просто меняешь импорт. При этом автоматически работает HTTP/1.1, HTTP/2 и HTTP/3 — либо выбирает лучший протокол сама. Есть Async, WebSocket через HTTP/1, 2, 3, DNS‑over‑HTTPS, DNSSEC и поддержка с нового питона без GIL. Если просто иногда дёргаете один‑два API — можно не париться и оставаться на той либе, что сейчас используете. Если хотя бы сотни запросов, то можно попробовать получить прирост скорости просто заменой импорта. 📎 Код на GitHub, на видео тот самый бенчмарк ​ @zen_of_python

Библиотеку packaging ускорили в 3 раза packaging — это библиотека, которую использует почти всё в Python-экосистеме для работы с версиями и зависимостями. Она встроена в pip, а pip встроен в Python — так что это буквально самая распространённая сторонняя библиотека в мире. ​ Когда pip резолвит зависимости, он создаёт миллионы объектов Version и SpecifierSet. Буквально миллионы — в бенчмарке, который использовал автор, было 4,8 миллиона. Каждый раз парсится регулярка, создаются объекты, сравниваются версии. Это занимает время. ​ ➡️ Что сделал мейнтейнер библиотеки? Взял новый статистический профайлер из Python 3.15, прогнал через него реальные данные (все версии когда-либо загруженные на PyPI) и нашёл узкие места. ​ Оказалось, что регулярка — не главная проблема. Основное время уходило на: 🔘Создание лишних объектов (NamedTuple внутри Version — убрал, +20%) 🔘Дублирование работы (Version создавался дважды в одном месте — исправил, +37%) 🔘Неоптимальный код (генераторы вместо map, singledispatch вместо if — переписал) ​ Результат: 🔘Чтение версий: 19,6 сек → 9,9 сек (2x) 🔘Проверка requires-python: 105 сек → 33,9 сек (3x) 🔘Количество создаваемых Version в pip: 4,8M → 400K ​ Все исправления будут в версии 26, уже вышла rc1, финальный релиз обещают на днях. @zen_of_python

dbgpu — база 2000+ видеокарт с TechPowerUp в Python Python-пакет для работы со спецификациями GPU. Парсит TechPowerUp, отдаёт структурированные данные. MIT лицензия. ​ Установка и использование
pip install dbgpu
dbgpu lookup "GeForce RTX 4090"
from dbgpu import GPUDatabase
db = GPUDatabase.default()
spec = db["GeForce RTX 4090"]
# или нечёткий поиск: db.search("4090")
Поддерживает NVIDIA, AMD, Intel, ATI, 3dfx, Matrox — всё, что есть на TechPowerUp. ​ Внутри ~50 полей на карту: архитектура, техпроцесс (нм), транзисторы, die size, частоты (base/boost/memory), память (тип, объём, шина, bandwidth), шейдерные юниты, TMU, ROP, SM, tensor/RT cores, кэши L1/L2, TDP, размеры платы, разъёмы питания и видеовыходы, версии API (DirectX, OpenGL, Vulkan, OpenCL, CUDA, Shader Model), производительность FP16/FP32/FP64. ​ В релизах на GitHub лежат готовые JSON/CSV/PKL. Последний полный билд — декабрь 2025. ​ Можно спарсить свежую базу самостоятельно:
pip install dbgpu[build]
dbgpu build --manufacturer NVIDIA --start-year 2023
Rate limit 4 req/min. Полный проход по всем GPU — 10+ часов. ​ 📎 Код на GitHub @zen_of_python

Один начинающий программист читал Effective Python и завис на первой главе на форматировании строк. Искал что-то типа Pythex, но для f-strings — не нашёл. Попросил Claude сделать HTML-приложение по спеке из help('FORMATTING'). Получился вот такой сайт с визуализацией форматирования строк в питоне. Format spec mini-language выглядит так:
[[fill]align][sign][#][0][width][grouping_option][.precision][type]
И когда видишь f'{value:0>10.2f}' — не сразу понятно, что где. Визуализатор разбирает строку на части и показывает, за что отвечает каждый символ. ​ Примеры того, что можно форматировать
f'{3.14159:.2f}'      # → '3.14'
f'{"test":#>10}'      # → '######test'  
f'{12345:,}'          # → '12,345'
f'{-42:010}'          # → '-000000042'
Выравнивание, заполнение, знаки, разделители тысяч, точность — всё в одной строке. 📎 Код на GitHub, демо на сайте @zen_of_python

Если взять конкретный язык, то всё может быть ещё хуже. В Python, например, тип bool наследуется от int, поэтому True и False
Если взять конкретный язык, то всё может быть ещё хуже. В Python, например, тип bool наследуется от int, поэтому True и False — это полноценные объекты — целые числа. Каждый объект в CPython несёт накладные расходы: 🔘PyObject header — счётчик ссылок + указатель на тип (~16 байт на 64-бит) 🔘PyLongObject — структура для хранения целых чисел произвольной длины (~12 байт дополнительно) Можно проверить самостоятельно:
import sys
print(sys.getsizeof(True))   # 28
print(sys.getsizeof(False))  # 28
Почему так расточительно? Python оптимизирован для удобства и гибкости, а не для экономии памяти. Зато True и False — синглтоны (существует только по одному экземпляру каждого), так что в реальных программах это не создаёт проблем. Для компактного хранения множества булевых значений используют numpy.array с dtype=bool (1 байт на значение) или битовые массивы. @devs_books

calgebra — алгебра множеств для календарей в Python Есть задача: найти время, когда вся команда свободна, с учётом Google Calendar, .ics файлов и рабочих часов. Обычно это превращается в ад из циклов и условий. Новый проект решает это через операторы множеств — как будто пишешь SQL, но для временных интервалов. Как это работает
from calgebra import day, time_of_day, HOUR

# Рабочие часы
work_hours = day("weekday") & time_of_day(start=9*HOUR, duration=8*HOUR)

# Календари команды
team = alice | bob | charlie

# Свободное время для встречи от 2 часов
free = (work_hours - team).filter(hours >= 2)
Операторы: | (объединение), & (пересечение), - (разность), ~ (дополнение). Ленивые вычисления — выражение выполняется только при слайсинге. ➡️ Чем отличается от аналогов 🔘icalendar / ics.py — только парсят .ics, calgebra добавляет запросы и композицию 🔘gcsa — CRUD для Google Calendar, calgebra даёт set-операции поверх 🔘dateutil.rrule — генерирует повторения, но не умеет пересекать/вычитать таймлайны ➡️ Фичи 🔘Поддержка RFC 5545 (повторяющиеся события) 🔘Фильтры по длительности, метаданным, кастомным атрибутам 🔘Импорт/экспорт .ics через file_to_timeline и timeline_to_file 🔘Интеграция с Google Calendar 🔘Type hints для IDE и агентов ➡️ Кому пригодится Разработчикам scheduling-фич, интеграций с календарями, систем проверки availability. Автор отмечает, что API удобен для ИИ-агентов благодаря композируемости и типизации. 📎 Код на GitHub, на видео демо работы ИИ-агента с calgebra @zen_of_python

PCA — стандартный способ уменьшить размерность данных (1000 фичей → 50). Главная боль: нужно выбирать n_components — сколько компонент оставить. Обычно либо перебор через GridSearch, либо «ну возьму 50, должно хватить». Библиотека randomized-svd решает проблему автоматически. 🔘Сама определяет, где заканчивается сигнал и начинается шум 🔘Отрезает лишнее без ручного подбора 🔘Один проход вместо кросс-валидации ➡️ Бонус для больших данных PCA требует центрирования матрицы. Если матрица разреженная (sparse), центрирование делает её плотной — память взрывается. Библиотека умеет считать PCA на sparse-матрицах без этой проблемы. ​ Использование
from randomized_svd import RandomizedSVD

rsvd = RandomizedSVD(n_components=100, rank_selection='auto')
X_reduced = rsvd.fit_transform(X)  # сама выберет сколько компонент нужно
Drop-in замена sklearn — работает в Pipeline. ​ 📎 Код на GitHub, доки @zen_of_python

Каждый баг в 2025 — мой, натуральный, человеческий
Каждый баг в 2025 — мой, натуральный, человеческий

Pyrethrin — exhaustive error handling для Python, теперь с обёртками для pandas/numpy/FastAPI Библиотека, которая привносит Rust-стиль обработки ошибок в Python: нельзя проигнорировать исключение, компилятор (ну, рантайм) заставит обработать все варианты. Новое в v0.2.0: Shields Drop-in замены для библиотек с явным объявлением исключений:
# Было — исключения неявные
import pandas as pd
df = pd.read_csv("data.csv")

# Стало — нужно обработать все возможные ошибки
from pyrethrin.shields import pandas as pd
from pyrethrin import match, Ok

result = match(pd.read_csv, "data.csv")({
    Ok: lambda df: process(df),
    OSError: lambda e: log_error("File not found", e),
    pd.ParserError: lambda e: log_error("Invalid CSV", e),
    # ... остальные
})
➡️ Как узнали какие исключения бросает pd.read_csv? Автор написал отдельный инструмент Arbor для статического анализа. Для read_csv он прошёл 5,623 функции и нашёл 1,881 raise-statement — 35 типов исключений. Топ: ValueError (442), TypeError (227), NotImplementedError (87). ➡️ Философия 🔘Нет unwrap() — никаких escape hatch, обрабатывай всё 🔘Проверка exhaustiveness в момент вызова, не импорта 🔘Работает с нативным match-case (Python 3.10+) 📎 GitHub, Arbor, PyPI @zen_of_python

pyauto-desktop — современная замена PyAutoGUI с поддержкой HiDPI Если автоматизировали десктоп через PyAutoGUI — знаете боль: скрипт ломается при смене разрешения, на 4K всё едет, мультимонитор не работает. Новая библиотека решает это. ​ Отличия от PyAutoGUI 🔘Автоскейлинг координат и изображений через Session-логику 🔘До 5x быстрее (mss + Pyramid Template Matching + кэширование) 🔘locateAny / locateAll из коробки вместо циклов 🔘Встроенный GUI Inspector: снипы, редактор, генерация кода 🔘Бэкенд: opencv-python, mss, pynput ​ Из комментариев
Session management, который абстрагирует DPI — это то, чего не хватало PyAutoGUI
​📎 Код на GitHub, на видео демо @zen_of_python

Напомнию, что есть канал по нейронкам, который ведёт тот же автор, что и этот канал. Это всё часть медиа Tproger, где я работаю. ⚡️ Основная фишка — на все свежие ИИ-релизы я делаю посты, чтобы вы могли читать только один канал. Иногда получается даже раньше официального запуска, чем я особенно горжусь :) И есть моя любимая рубрика: ➡️ Обзор трендов Hugging Face за неделю с супер-кратким описанием моделей, выходит регулярно. Иногда закидываю мемчики или что-то полезное для изучения (о, это очень крутая книга, рекомендую если раньше не видели). Заходите и подписывайтесь: @neuro_channel

Почему Python наконец-то убирает GIL — объяснение за 2 минуты GIL — Global Interpreter Lock — один глобальный мьютекс на весь интерпретатор CPython. Любой поток, который хочет выполнить Python-код, должен сначала захватить этот lock. Один lock = только один поток работает в любой момент времени. ​ ➡️ Почему так сделали В 1991 году, когда появился Python, многоядерных CPU практически не было. Потоки добавили в язык в середине 90-х, и вместо того чтобы защищать каждую внутреннюю структуру интерпретатора отдельным мьютексом — поставили один глобальный. Проще, быстрее, работает. ​
«Нам казалось, что мы нормально разобрались с потоками. Многоядерных процессоров тогда всё равно ни у кого не было» — Гвидо ван Россум
➡️ Когда это стало проблемой Середина 2000-х: производители чипов упёрлись в потолок частоты и начали наращивать ядра. Внезапно concurrency без parallelism — это ограничение, а не фича. ​ ➡️ Что меняется Спустя 30+ лет процесс удаления GIL наконец запущен. Python сможет выполнять потоки параллельно. Кстати, если хочется parallelism прямо сейчас — можно использовать альтернативные интерпретаторы (например, на Rust), которые уже масштабируются на все ядра. @zen_of_python

«Стандартная рабочая станция» согласно регламенту компании
«Стандартная рабочая станция» согласно регламенту компании

Выпущен Mesa 3.4.0 — фреймворк для агентного моделирования на Python ➡️ Что такое агентное моделирование Вместо описания сист
Выпущен Mesa 3.4.0 — фреймворк для агентного моделирования на Python ➡️ Что такое агентное моделирование Вместо описания системы уравнениями — задаёте простые правила для отдельных «агентов» (птицы, машины, люди) и смотрите, как из их взаимодействий возникают паттерны. Как формируются пробки? Как распространяются эпидемии? Как стаи птиц самоорганизуются? ABM отвечает на такие вопросы. ➡️ Что такое Mesa Основной Python-фреймворк для ABM. Интегрирован с NumPy, pandas, Matplotlib. Даёт инструменты для пространственных отношений, планирования агентов, сбора данных. Используется для моделирования эпидемий, рыночной динамики, экологических систем. ➡️ Что нового в 3.4.0 🔘Единое время симуляции. Раньше время было разбросано: model.steps в простых моделях, simulator.time в discrete event. Теперь единый model.time для всех. 🔘Воспроизводимость batch run. Новый параметр rng для явного контроля random seeds. Раньше при фиксированном seed все итерации давали одинаковые результаты вместо независимых реплик. Прочее: 🔘Визуализация: поддержка AgentPortrayalStyle в Altair 🔘Удалён экспериментальный cell space → стабильный mesa.discrete_space 🔘Python 3.12+ обязателен 🔘Миграция на новую GitHub-организацию mesa 📎 Код на GitHub, подробнее в заметках по релизу, есть онлайн-демо На скриншоте — классический пример Wolf Sheep: волки (красные) охотятся на овец (голубые), овцы едят траву (зелёные клетки). Справа — график динамики популяций: видно, как система приходит к равновесию. @zen_of_python