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) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 19 287 подписчиков, занимая 6 972 место в категории Технологии и приложения и 35 079 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 19 287 подписчиков.
Согласно последним данным от 05 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило 26, а за последние 24 часа — -3, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 12.34%. В первые 24 часа после публикации контент обычно набирает 5.62% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 2 378 просмотров. В течение первых суток публикация набирает 1 082 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 9.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как github, rust, pip, api, install.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Полный Дзен Пайтона в одном канале
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site
Регистрация в перечне РКН: https://tprg.ru/xZOL”
Благодаря высокой частоте обновлений (последние данные получены 07 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
ExceptionGroup(
[ValueError("Ошибка 1"), TypeError("Ошибка 2")]
)
Рассмотрим пример:
import asyncio
async def task1():
raise ValueError("Ошибка в task1")
async def task2():
raise TypeError("Ошибка в task2")
async def main():
try: # ловит ExceptionGroup
await asyncio.gather(task1(), task2()) # запускает обе задачи параллельно
except* ValueError as e: # перехватывает все ValueError из группы
for err in e.exceptions:
print(f"Перехвачено ValueError: {err}")
except* TypeError as e: # перехватывает все TypeError
for err in e.exceptions:
print(f"Перехвачено TypeError: {err}")
asyncio.run(main())
'''
Вывод:
Перехвачено ValueError: Ошибка в task1
Перехвачено TypeError: Ошибка в task2
'''
Подводные камни except*
- except* нельзя комбинировать с обычным except в одном обработчике (`except* ValueError as e, TypeError as e2` — так нельзя);
- except* работает только с ExceptionGroup — для обычных исключений он не нужен;uvicorn --reload или gunicorn --reload, при любом изменении кода полностью перезапускают сервер. Это может занимать целую вечность, если проект крупный.
Одна команда реализовала такую перезагрузку «на месте» с помощью Dependency Graph. При изменении файла система определяет все связанные с ним модули и обновляет только их.
Используя карту зависимостей и отслеживание порядка импорта, удалось сократить время обновления с 4,8 секунды до 6 миллисекунд.
✍️ — бывало, подбешивало
🗿 — ну и пускай перезагружается с нуля
#факт
@zen_of_pythonmatch-case.
match user:
case User(name="Admin", role=AdminRole()) as admin:
return admin.get_permissions()
case User(name=name, role="editor") if is_senior(name):
return editor_permissions()
case _:
return default_permissions()
- Если объект user является экземпляром класса User с атрибутом name, равным "Admin", и атрибутом role, являющимся экземпляром AdminRole, то он присваивается переменной admin, и вызывается метод get_permissions();
- Если user — это User с ролью "editor" и именем, удовлетворяющим условию is_senior(name), то возвращаются разрешения редактора.
- Во всех остальных случаях возвращаются разрешения по умолчанию.
Под капотом сопоставление по атрибутам работает следующим образом:
- Проверяется, является ли объект экземпляром указанного класса;
- Затем происходит попытка сопоставления указанных атрибутов объекта с заданными значениями или шаблонами;
- Если все условия выполняются, сопоставление считается успешным, и можно использовать переменные, полученные в результате сопоставления.
try:
...
except ExceptionA, ExceptionB, ExceptionC:
...
#факт
@zen_of_python
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
