Zen of Python
Полный Дзен Пайтона в одном канале Разместить рекламу: @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 714 subscribers, ranking 7 010 in the Technologies & Applications category and 35 227 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 18 714 subscribers.
According to the latest data from 28 October, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -100 over the last 30 days and by -10 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 6.22%. Within the first 24 hours after publication, content typically collects 4.24% reactions from the total number of subscribers.
- Post reach: On average, each post receives 1 165 views. Within the first day, a publication typically gains 793 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 1.
- 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 29 October, 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.
@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_pythontyro.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
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