en
Feedback
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 957 subscribers, ranking 6 786 in the Technologies & Applications category and 34 781 in the Russia region.

📊 Audience metrics and dynamics

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

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

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 12.56%. Within the first 24 hours after publication, content typically collects 6.30% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 2 381 views. Within the first day, a publication typically gains 1 195 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 5.
  • 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 28 August, 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 957
Subscribers
+724 hours
-317 days
-15730 days
Posts Archive
Что такое магистратура для инженеров данных и почему сейчас — лучшее время поступать На Tproger рассказали, почему именно сей
Что такое магистратура для инженеров данных и почему сейчас — лучшее время поступать На Tproger рассказали, почему именно сейчас — лучший момент, чтобы выучиться на инженера данных. Программа магистратуры от НИУ ВШЭ совместно с Нетологией даёт официальный государственный диплом, а также дополнительный профессиональный сертификат. Обучение строится на практике: студенты накапливают портфолио через учебные проекты, хакатоны и стажировки у партнёров программы, а завершают его выпускной квалификационной работой, которая может быть исследовательской или корпоративной. Вы получите навыки работы с Python, SQL, Java, Hadoop, Airflow, Docker, Yandex Cloud, ClickHouse, PostgreSQL и сможете строить эффективные пайплайны. Есть очный и удаленный форматы. #обучение @zen_of_python

@pytest.mark.parametrize: Как параметризировать тесты Тестирование кода может быть утомительным процессом. Когда у вас есть множество похожих тестовых случаев, написание отдельных функций для каждого часто приводит к дублированию кода. Именно здесь на помощь приходит функция @pytest.mark.parametrize. Начнем с простого примера. У нас есть функция add_nums(), которая складывает числа из списка:

def add_nums(numbers):
    return sum(numbers)
Без parametrize тесты могли бы выглядеть так:

def test_123():
    assert add_nums([1, 2, 3]) == 6

def test_negatives():
    assert add_nums([1, 2, -3]) == 0

def test_empty():
    assert add_nums([]) == 0
Что не так с этим подходом? Дублирование кода: каждая тестовая функция повторяет одну и ту же структуру. Вместо написания трех отдельных функций, мы можем создать одну параметризованную функцию:

import pytest

@pytest.mark.parametrize(
    "nums, expected_total",
    [
        ([1, 2, 3], 6),
        ([1, 2, -3], 0),
        ([], 0),
    ]
)
def test_add_nums(nums, expected_total):
    assert add_nums(nums) == expected_total
1. @pytest.mark.parametrize — это специальный декоратор pytest 2. Параметры "nums, expected_total" — имена параметров функции 3. Тестовые данные — список кортежей, где каждый содержит значения для одного теста Pytest автоматически вызывает вашу функцию с каждым набором параметров:

# Первый вызов
test_add_nums([1, 2, 3], 6)

# Второй вызов  
test_add_nums([1, 2, -3], 0)

# Третий вызов
test_add_nums([], 0)
Результат: 3 отдельных теста, каждый из которых может пройти или упасть. Кастомные ID для тестов По умолчанию pytest генерирует автоматические ID для тестов, но они могут быть не очень понятными. Вы можете задать свои:

@pytest.mark.parametrize(
    "nums, expected_total",
    [
        ([1, 2, 3], 6),
        ([1, 2, -3], 0),
        ([], 0),
    ],
    ids=["positive_numbers", "mixed_numbers", "empty_list"]
)
def test_add_nums(nums, expected_total):
    assert add_nums(nums) == expected_total
Теперь при запуске тестов вы увидите:
test_add_nums[positive_numbers] PASSED
test_add_nums[mixed_numbers] PASSED  
test_add_nums[empty_list] PASSED
Вложенная параметризация Можно комбинировать несколько параметризаций:

@pytest.mark.parametrize("x", [1, 2, 3])
@pytest.mark.parametrize("y", [10, 20])
def test_multiply(x, y):
    assert x * y == x * y
Это создаст 6 тестов: (1,10), (1,20), (2,10), (2,20), (3,10), (3,20). #основы @zen_of_python

Где арендовать GPU в 2025: подборка GPU‑хостингов с адекватной ценой и SLA В 2025 году аренда видеокарт в облаке становится в
Где арендовать GPU в 2025: подборка GPU‑хостингов с адекватной ценой и SLA В 2025 году аренда видеокарт в облаке становится всё более актуальной альтернативой покупке собственного оборудования. В обзоре представили подборку провайдеров, которые предлагают топовые видеокарты — от NVIDIA V100 и A40 до мощнейших H100 и A100 для создания кластеров до 8 GPU. Многие из них предоставляют фичу — поминутную / почасовую оплату (pay-as-you-go), что делает такое железо доступным физлицам. Например, на VK Cloud предлагаются GPU L4, Tesla V100 и A100 для задач от видеообработки до глубокого обучения, а Cloud.ru предлагает H100, A100, V100 и A40 с возможностью формирования мощных кластеров. #факт @zen_of_python

Вопрос подписчика: IDE + GPT Задает @vberia: «Какие IDE и какие GPT сейчас актуальны? Можно топ 3? Не хочется тестировать лиш
Вопрос подписчика: IDE + GPT Задает @vberia: «Какие IDE и какие GPT сейчас актуальны? Можно топ 3? Не хочется тестировать лишнего, но хочется протестить нужные)». NB! Пожалуйста, будьте взаимовежливы. Однажды и вам помогут в этой рубрике. #вопросы_подписчиков @zen_of_python

Repost from Код найма
⚡ Прямой эфир с ментором по Python Сергеем Филичкиным Забивайте слот в календаре: 📌 19 августа, 18:00 — Сергей Филичкин пров
Прямой эфир с ментором по Python Сергеем Филичкиным Забивайте слот в календаре: 📌 19 августа, 18:00 — Сергей Филичкин проведёт бесплатную открытую консультацию в «Коде найма». Тему этого эфира помогли выбрать вы! Будем разбирать, «Как собирать офферы «про запас» и торговаться за лучшую цену». А вот более подробный план встречи: 🖇Как грамотно позиционировать себя на рынке, чтобы получить больше предложений. 🖇Психология успеха в переговорах: как уверенно говорить о деньгах. 🖇Тактика сбора офферов и ведения торгов. 🖇Лайфхаки по автоматизации поиска и переписки с рекрутерами. 🖇Блок Q&A с разбором ваших ситуаций. 💬 Оставляйте свои вопросы Сергею под этим постом — чтобы наш ментор дал развернутые и действительно рабочие советы! ✅Python-карьера в 2025 без воды: деньги, офферы, переговоры. Подписывайся. ИП Филичкин Сергей Андреевич ИНН 183401586208, erid: 2W5zFJydiRE

tyro | Ваша функция, вызываемая в CLI tyro.cli() автоматически преобразует Python-функцию или класс с аннотациями типов в пол
tyro | Ваша функция, вызываемая в CLI tyro.cli() автоматически преобразует Python-функцию или класс с аннотациями типов в полнофункциональный интерфейс командной строки, без необходимости вручную прописывать парсинг аргументов:

@dataclass
class Config:
    input_file: str
    verbose: bool = False
Здесь tyro.cli(Config) создаёт полноценный CLI, где аргументы --input-file и --verbose будут автоматически сгенерированы, а при вызове в терминале доступна помощь (--help). Утилита извлекает аннотации и doc-строки. Аргументы становятся типами, которыми оперируют IDE и анализаторы mypy, pyright: автодополнение, переход к определению, рефакторинг — всё работает «из коробки». Это даст возможность автокомплитить с Tab. #инструмент @zen_of_python

Квиз: какой ты магистр информационных технологий Собрали для вас интерактивный приключенческий квест с сеттингом футуристично
Квиз: какой ты магистр информационных технологий Собрали для вас интерактивный приключенческий квест с сеттингом футуристичного города инженеров. Всего пару минут и вы узнаете, какая магистерская программа точно будет вам по духу. Сохраняйте: https://tprg.ru/YGcC

complexipy | Вычисляем когнитивную сложность вашего кода Нетривиальный инструмент, позволяющий вычислить Cognitive Complexity
complexipy | Вычисляем когнитивную сложность вашего кода Нетривиальный инструмент, позволяющий вычислить Cognitive Complexity («когнитивную сложность»). В контексте программирования это метрика, оценивающая насколько трудно человеку понять код — учитываются не только ветвления и циклы, как в Cyclomatic Complexity, но и структура, глубина вложенности, логические конструкции, операторы и прочие аспекты, создающие когнитивную нагрузку при чтении. Это важная метрика при рефакторинге проекта. Тул интегрируется через CLI, GitHub Actions, pre-commit-hooks и позволяет анализировать функции, файлы и директории, указывая те, чей коэффициент сложности превышает определенный порог. #инструмент @zen_of_python 💔 — Если рефакторинг разбивает сердце

Когда хотел просто поиграть, но случайно спас марсианскую базу… Go-разработчики, ваш выход! Вместе с «МойОфис» сделали игру,
Когда хотел просто поиграть, но случайно спас марсианскую базу… Go-разработчики, ваш выход! Вместе с «МойОфис» сделали игру, в которой нужно проявить все свои знания в Go. Решите задачи и помогите главным героям спасти марсианских колонизаторов. P.S. Первые 10 игроков с максимальным результатом за минимальное время получат подарки от «МойОфис». Вперёд, времени почти нет: https://tprg.ru/sZEq Реклама

Полезный мем: переменные или методы, имена которых начинаются с двойного подчёркивания (например, __x), автоматически «искажа
Полезный мем: переменные или методы, имена которых начинаются с двойного подчёркивания (например, __x), автоматически «искажаются» интерпретаторомпутём добавления имени класса в начало. Это делается для обеспечения некоторой степени инкапсуляции и предотвращения конфликтов имён в классах-наследниках. «Приватные» переменные с двойным одчёркиванием на самом деле претерпевают трансформацию имени (Name Mangling). #кек #факт @zen_of_python

while True #кек @zen_of_python

Вопросы подписчиков Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает: — Спрашивайте
Вопросы подписчиков Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает: — Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов! — Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте; #вопросы_новичков @zen_of_python

fastapi_mcp | Ваш самописный API как инструмент LLM Если вы обладаете самописным API и хотите, чтобы LLM умела им пользоваться, то эта библиотека поможет. За несколько строк кода вы сможете выдать функционал своего проекта нейронкам вроде ChatGPT по эндпоинту https://app.base.url/mcp:

from fastapi import FastAPI
from fastapi_mcp import FastApiMCP

app = FastAPI()

mcp = FastApiMCP(app)

# Mount the MCP server directly to your FastAPI app
mcp.mount()
#инструмент @zen_of_python

system-design-primer | Учим проектирование больших систем Годный способ подготовки к интервью. Содержит гайд, вопросы + ответ
system-design-primer | Учим проектирование больших систем Годный способ подготовки к интервью. Содержит гайд, вопросы + ответы с интервью, карточки для запоминания. Для тех, кто доволен текущим местом работы, это отличный способ закрыть пробелы в познаниях о компонентах Цена: бесплатно Репозиторий проекта @prog_tools

Взгляните на IT-мир по-новому 12 сентября. Топовые IT-компании. Закулисье разработок и доклады экспертов. Ещё не знаете, о чём речь? Сейчас расскажем! Приглашаем вас на big tech night. Событие придумали в Яндексе и организовали вместе со Сбером, X5, Т-Банком и Lamoda. Впервые компании одновременно откроют двери офисов ночью и покажут IT-специалистам, где рождаются технологии. ▶️ В московских офисах организаторов вы: • послушаете доклады топовых экспертов, • обсудите новейшие разработки, • познакомитесь с крутыми профессионалами, • и просто повеселитесь. ▶️ Если не сможете прийти офлайн, big tech night организует онлайн-студию. Зрители смогут: • посмотреть выступления спикеров от каждой компании, • послушать дебаты о технологиях, • поучаствовать в интерактивах, • получить записи докладов после мероприятия. Регистрируйтесь на сайте и присоединяйтесь к нам 12 сентября с 18:00 до 00:00! Подписывайтесь: big tech night Реклама. Рекламодатель: ООО "Яндекс" ИНН 7736207543 Это #партнёрский пост

Офер в Яндекс за 48 часов: ищут бэкендеров Яндекс приглашает на Мультитрек — онлайн-программу быстрой адаптации. В команду ну
Офер в Яндекс за 48 часов: ищут бэкендеров Яндекс приглашает на Мультитрек — онлайн-программу быстрой адаптации. В команду нужны опытные бэкенд-разработчики на C++, Python, Java и Go. Всего за 2 дня вы можете получить офер: • До 18 августа — подать заявку и пройти предварительный отбор; • 23 августа — решить задачи на технических секциях; • 24 августа — пройти финальное собеседование и получить офер. После этого вы получите возможность поработать с тремя командами и выбрать проект по душе. Присоединяйтесь к команде, которая создаёт технологии, меняющие мир. Оставляйте заявку на сайте Это #партнёрский пост

Больше не элита Канадский писатель и активист Кори Доктороу анализировал изменения в положении IT-специалистов. Он отмечает,
Больше не элита Канадский писатель и активист Кори Доктороу анализировал изменения в положении IT-специалистов. Он отмечает, что раньше разработчики пользовались высоким спросом, что позволяло им диктовать условия труда. Однако в последние годы ситуация изменилась: компании начали массовые сокращения, увеличили нагрузку на оставшихся сотрудников и усилили контроль за их работой. Доктороу подчеркивает, что разработчики больше не являются «принцами труда» и теперь сталкиваются с теми же проблемами, что и рабочие на заводах или в доставке. Он призывает к солидарности и созданию профсоюзов как способу защиты прав работников в новых условиях рынка труда. @zen_of_python

Паттерн Mediator | Что это и зачем нужен Mediator — паттерн проектирования, который вводит объект-посредник для координации взаимодействий между другими объектами. Вместо того, чтобы объекты напрямую вызывали методы друг друга и пытались «договариваться», они отправляют сообщения посреднику, а он решает, кто и как должен на них отреагировать. Классическая аналогия — диспетчерская в аэропорту: пилоты не связываются друг с другом напрямую, а говорят с диспетчером. При прямой связи «каждый с каждым» количество зависимостей растёт как квадрат числа компонентов: изменения в одном классе часто заставляют править десятки других. Посредник помещает логику взаимодействия в одну точку:

class Mediator:
    """Интерфейс медиатора."""
    def notify(self, sender, event):
        raise NotImplementedError

class CourseMediator(Mediator):
    """Конкретный медиатор — координатор курсов и пользователей."""
    def __init__(self):
        self.users = []

    def register(self, user):
        self.users.append(user)
        user.mediator = self

    def notify(self, sender, course_name):
        # В простом варианте медиатор просто логирует сообщение
        print(f"[{sender}] выбрал курс: {course_name}")
        # Можно добавить дополнительную логику: фильтрация, отправка уведомлений и т.п.

class User:
    def __init__(self, name):
        self.name = name
        self.mediator = None

    def send_course(self, course_name):
        if not self.mediator:
            raise RuntimeError("User не зарегистрирован у медиатора")
        self.mediator.notify(self, course_name)

    def __str__(self):
        return self.name


m = CourseMediator()
u1 = User("Майкл"); u2 = User("Оля")
m.register(u1); m.register(u2)
u1.send_course("DSA")
u2.send_course("Software Development")
User не знает про других пользователей. Вся координация — в CourseMediator. Такой подход облегчает изменение логики (например, добавить рассылку уведомлений другим пользователям) без модификации User. Медиатор снижает связанность (Coupling) между компонентами и упрощает поддержку. Плюсы 1️⃣ Централизация логики взаимодействия (проще править и тестировать). 2️⃣ Снижение связности между компонентами. 3️⃣ Легче добавлять новые стратегии взаимодействия, не меняя классы коллег. Минусы 1️⃣ Риск «божественного объекта» (God Object): медиатор может накопить слишком много логики и стать сложным. 2️⃣ Централизация порождает узкое место — медиатор становится более сложным и менее прозрачным. #основы @zen_of_python