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 718 підписників, посідаючи 7 007 місце в категорії Технології та додатки та 35 217 місце у регіоні Росія.
📊 Показники аудиторії та динаміка
З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 18 718 підписників.
За останніми даними від 27 жовтня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -91, а за останні 24 години на -3, загальне охоплення залишається високим.
- Статус верифікації: Не верифікований
- Рівень залученості (ER): Середній показник залученості аудиторії становить 6.24%. Протягом перших 24 годин після публікації контент зазвичай збирає 4.26% реакцій від загальної кількості підписників.
- Охоплення публікацій: В середньому кожен допис отримує 1 168 переглядів. Протягом першої доби публікація в середньому набирає 797 переглядів.
- Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 1.
- Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як github, rust, pip, api, install.
📝 Опис та контентна політика
Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“Полный Дзен Пайтона в одном канале
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site
Регистрация в перечне РКН: https://tprg.ru/xZOL”
Завдяки високій частоті оновлень (останні дані отримано 28 жовтня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.
# Было — исключения неявные
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_pythonSession management, который абстрагирует DPI — это то, чего не хватало PyAutoGUI📎 Код на GitHub, на видео демо @zen_of_python
«Нам казалось, что мы нормально разобрались с потоками. Многоядерных процессоров тогда всё равно ни у кого не было» — Гвидо ван Россум ➡️ Когда это стало проблемой Середина 2000-х: производители чипов упёрлись в потолок частоты и начали наращивать ядра. Внезапно concurrency без parallelism — это ограничение, а не фича. ➡️ Что меняется Спустя 30+ лет процесс удаления GIL наконец запущен. Python сможет выполнять потоки параллельно. Кстати, если хочется parallelism прямо сейчас — можно использовать альтернативные интерпретаторы (например, на Rust), которые уже масштабируются на все ядра. @zen_of_python
winget install servy
choco install -y servy
scoop install servy
📎 Код на GitHub, пример для Python, на видео демо
@zen_of_python# uv add pyreqwest
from pyreqwest.client import ClientBuilder, SyncClientBuilder
async def example_async():
async with ClientBuilder().error_for_status(True).build() as client:
response = await client.get("https://httpbun.com/get").query({"q": "val"}).build().send()
print(await response.json())
def example_sync():
with SyncClientBuilder().error_for_status(True).build() as client:
print(client.get("https://httpbun.com/get").query({"q": "val"}).build().send().json())
📎 Код на GitHub
@zen_of_pythonuv tool install ty@latest
Или VS Code extension: ищите «ty» в маркетплейсе.
Сейчас Beta — команда Astral уже использует его в продакшне. Stable планируется в следующем году. В планах — поддержка Pydantic, Django и type-aware линтинг в связке с Ruff.
📎 GitHub, пост в блоге, на видео демо скорости работы
@zen_of_pythonpip install kreuzberg
📎 GitHub: https://github.com/kreuzberg-dev/kreuzberg
На картинке сравнение с альтернативами.
@zen_of_pythonrandom.seed(5) и random.seed(-5) дают одинаковую последовательность случайных чисел.
➡️ Как обнаружилось
Карпати работал над nanochat и хотел использовать знак seed'а для разделения train/test данных. Получил баг: train и test оказались идентичными.
➡️ Почему так
В исходниках CPython (_randommodule.c, строка 321) явно вызывается abs():
// "This algorithm relies on the number being unsigned"
n = PyNumber_Absolute(arg);
Знак просто отбрасывается.
➡️ Баг или фича?
Формально — не баг. Документация гарантирует только то, что одинаковый seed даст одинаковую последовательность. Но не гарантирует, что разные seed'ы дадут разные последовательности.
Карпати считает это ошибкой дизайна: знаковый бит мог бы удвоить пространство seed'ов. Простое решение: n -> 2*abs(n) + int(n < 0).
➡️ Что дальше
🔘Не полагаться на отрицательные seed'ы как на «другие»
🔘В NumPy отрицательные seed'ы вызывают ошибку — там строже
🔘Открыт issue на GitHub для обновления документации
import random
random.seed(42)
print(random.random()) # 0.6394267984578837
random.seed(-42)
print(random.random()) # 0.6394267984578837
@zen_of_python