Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL
Инструкция к Kubernetes, которую поймёт даже водитель Uber
Если ваша резиновая уточка уже освоила все популярные технологии, то пора искать новую жертву. Сможете рассказать о сложном так, чтобы вас понял даже далёкий от IT водитель такси?
Автор этого материала смог и поделился своим результатом. Если вы всё ещё не до конца понимаете кубер, то скорее читайте статью:
https://dev.to/therubberduckiee/explaining-kubernetes-to-my-uber-driver-4f60
Что такое магистратура для инженеров данных и почему сейчас — лучшее время поступать
На Tproger рассказали, почему именно сейчас — лучший момент, чтобы выучиться на инженера данных. Программа магистратуры от НИУ ВШЭ совместно с Нетологией даёт официальный государственный диплом, а также дополнительный профессиональный сертификат. Обучение строится на практике: студенты накапливают портфолио через учебные проекты, хакатоны и стажировки у партнёров программы, а завершают его выпускной квалификационной работой, которая может быть исследовательской или корпоративной. Вы получите навыки работы с Python, SQL, Java, Hadoop, Airflow, Docker, Yandex Cloud, ClickHouse, PostgreSQL и сможете строить эффективные пайплайны. Есть очный и удаленный форматы.
#обучение
@zen_of_python
Где арендовать 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
⚡ Прямой эфир с ментором по Python Сергеем Филичкиным
Забивайте слот в календаре:
📌 19 августа, 18:00 — Сергей Филичкин проведёт бесплатную открытую консультацию в «Коде найма».
Тему этого эфира помогли выбрать вы! Будем разбирать, «Как собирать офферы «про запас» и торговаться за лучшую цену». А вот более подробный план встречи:
🖇Как грамотно позиционировать себя на рынке, чтобы получить больше предложений.
🖇Психология успеха в переговорах: как уверенно говорить о деньгах.
🖇Тактика сбора офферов и ведения торгов.
🖇Лайфхаки по автоматизации поиска и переписки с рекрутерами.
🖇Блок Q&A с разбором ваших ситуаций.
💬 Оставляйте свои вопросы Сергею под этим постом — чтобы наш ментор дал развернутые и действительно рабочие советы!
✅Python-карьера в 2025 без воды: деньги, офферы, переговоры. Подписывайся.
ИП Филичкин Сергей Андреевич ИНН 183401586208, erid: 2W5zFJydiRE
Квиз: какой ты магистр информационных технологий
Собрали для вас интерактивный приключенческий квест с сеттингом футуристичного города инженеров. Всего пару минут и вы узнаете, какая магистерская программа точно будет вам по духу.
Сохраняйте: https://tprg.ru/YGcC
Когда хотел просто поиграть, но случайно спас марсианскую базу…
Go-разработчики, ваш выход! Вместе с «МойОфис» сделали игру, в которой нужно проявить все свои знания в Go. Решите задачи и помогите главным героям спасти марсианских колонизаторов.
P.S. Первые 10 игроков с максимальным результатом за минимальное время получат подарки от «МойОфис».
Вперёд, времени почти нет: https://tprg.ru/sZEq
Реклама
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()
Взгляните на IT-мир по-новому
12 сентября. Топовые IT-компании. Закулисье разработок и доклады экспертов. Ещё не знаете, о чём речь? Сейчас расскажем!
Приглашаем вас на big tech night. Событие придумали в Яндексе и организовали вместе со Сбером, X5, Т-Банком и Lamoda. Впервые компании одновременно откроют двери офисов ночью и покажут IT-специалистам, где рождаются технологии.
▶️ В московских офисах организаторов вы:
• послушаете доклады топовых экспертов,
• обсудите новейшие разработки,
• познакомитесь с крутыми профессионалами,
• и просто повеселитесь.
▶️ Если не сможете прийти офлайн, big tech night организует онлайн-студию. Зрители смогут:
• посмотреть выступления спикеров от каждой компании,
• послушать дебаты о технологиях,
• поучаствовать в интерактивах,
• получить записи докладов после мероприятия.
Регистрируйтесь на сайте и присоединяйтесь к нам 12 сентября с 18:00 до 00:00!
Подписывайтесь:
big tech night
Реклама. Рекламодатель: ООО "Яндекс" ИНН 7736207543
Это #партнёрский пост
Паттерн 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) между компонентами и упрощает поддержку. void | Опенсорсный Cursor
Клоны Cursor сыплются, как из рога изобилия в 2025 году. Все, как и везде: автокомплиты, чатик в окне справа, UI — как у еще одного форка VSCode. Множество популярных условно-бесплатных LLM (DeepSeek, Llama, Gemini, Qwen) или ваша оплаченная альтернатива вроде Gemini 2.5, Claude 3.7, Grok 3, o4-mini, and Qwen 3.
#инструмент
@zen_of_python
argparse: зачем нужен и при чем здесь sys.argv[]?
При создании скриптов, которые запускаются из командной строки, часто возникает необходимость принимать аргументы. Чтобы эффективно разбирать и обрабатывать эти параметры, в стандартной библиотеке Python есть модуль argparse
. В этом лонгриде мы покажем на примере, как его использовать, покажем взаимосвязь с sys.argv
.
➡️ Какую роль играет sys.argv?sys.argv
— это список, содержащий аргументы командной строки, с которыми был запущен скрипт. Первый элемент списка sys.argv[0]
— это имя самого скрипта.
Например, если вы вызовете скрипт так:
python script.py filename.txt -v
import sys
print(sys.argv) # ['script.py', 'filename.txt', '-v']
sys.argv
— это просто список строк, и если работать с ним вручную, то придётся самостоятельно обрабатывать порядок, типы данных, проверять правильность и т.п., что может стать сложной задачей. Здесь на помощь приходит argparse
. Он автоматизирует парсинг аргументов и предоставляет удобные способы проверки параметров CLI.argparse
позволяет описать, какие параметры принимает ваш скрипт, какие из них обязательны, какие опциональны, какие могут быть флагами (включить / выключить). Он также автоматически генерирует справку и обрабатывает ошибки в вводе.
import argparse
# Создаём парсер
parser = argparse.ArgumentParser(description='Обработка файла.') # Создаем объект ArgumentParser;
# Добавляем позиционный аргумент 'filename'
parser.add_argument('filename', help='имя файла для обработки') # Добавляем описание каждого аргумента или опции
# Разбираем аргументы командной строки
args = parser.parse_args() # Разберём аргументы sys.argv
# Fргументы доступны как атрибуты: args.filename
print(f'Обрабатываем файл: {args.filename}')
python script.py example.txt
Обрабатываем файл: example.txt
python script.py
usage: script.py [-h] filename
script.py: error: the following arguments are required: filename
От перевёрнутого логотипа С++ из глаз пошла кровь...
@ithumor
Жизненный цикл объекта — настоящего питониста
#кек
@zen_of_python
Мы писали ранее, что 12 сентября пройдёт big tech night. Событие придумали в Яндексе и организовали вместе со Сбером, X5, Т-Банком и Lamoda. Впервые топовые IT-компании одновременно откроют двери офисов в Москве с 18:00 до 00:00 и покажут специалистам, где рождаются технологии.
Пора рассказать о тех, кто выйдет на сцену⚡️
📣 Кто и о чём расскажет на big tech night? Начинаем представлять спикеров и темы. Читайте на карточках.
➡️ А подробнее про доклады рассказываем на сайте
Подписывайтесь:
💬 big tech night
Реклама. Рекламодатель: ООО "Яндекс" ИНН 7736207543
@pytest.mark.parametrize
: Как параметризировать тесты
Тестирование кода может быть утомительным процессом. Когда у вас есть множество похожих тестовых случаев, написание отдельных функций для каждого часто приводит к дублированию кода. Именно здесь на помощь приходит функция @pytest.mark.parametrize.
Начнем с простого примера. У нас есть функция add_nums()
, которая складывает числа из списка:
def add_nums(numbers):
return sum(numbers)
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
@pytest.mark.parametrize
— это специальный декоратор pytestnums, expected_total
" — имена параметров функции
# Первый вызов
test_add_nums([1, 2, 3], 6)
# Второй вызов
test_add_nums([1, 2, -3], 0)
# Третий вызов
test_add_nums([], 0)
@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
Вопрос подписчика: IDE + GPT
Задает @vberia:
«Какие IDE и какие GPT сейчас актуальны? Можно топ 3? Не хочется тестировать лишнего, но хочется протестить нужные)».
NB! Пожалуйста, будьте взаимовежливы. Однажды и вам помогут в этой рубрике.
#вопросы_подписчиков
@zen_of_python
tyro | Ваша функция, вызываемая в CLItyro.cli()
автоматически преобразует Python-функцию или класс с аннотациями типов в полнофункциональный интерфейс командной строки, без необходимости вручную прописывать парсинг аргументов:
@dataclass
class Config:
input_file: str
verbose: bool = False
tyro.cli(Config)
создаёт полноценный CLI, где аргументы --input-file
и --verbose
будут автоматически сгенерированы, а при вызове в терминале доступна помощь (--help
).mypy
, pyright
: автодополнение, переход к определению, рефакторинг — всё работает «из коробки». Это даст возможность автокомплитить с Tab.complexipy | Вычисляем когнитивную сложность вашего кода
Нетривиальный инструмент, позволяющий вычислить Cognitive Complexity («когнитивную сложность»). В контексте программирования это метрика, оценивающая насколько трудно человеку понять код — учитываются не только ветвления и циклы, как в Cyclomatic Complexity, но и структура, глубина вложенности, логические конструкции, операторы и прочие аспекты, создающие когнитивную нагрузку при чтении. Это важная метрика при рефакторинге проекта.
Тул интегрируется через CLI, GitHub Actions, pre-commit-hooks и позволяет анализировать функции, файлы и директории, указывая те, чей коэффициент сложности превышает определенный порог.
#инструмент
@zen_of_python
💔 — Если рефакторинг разбивает сердце
Полезный мем: переменные или методы, имена которых начинаются с двойного подчёркивания (например, __x), автоматически «искажаются» интерпретатором путём добавления имени класса в начало. Это делается для обеспечения некоторой степени инкапсуляции и предотвращения конфликтов имён в классах-наследниках.
«Приватные» переменные с двойным одчёркиванием на самом деле претерпевают трансформацию имени (Name Mangling).
#кек #факт
@zen_of_python
Вопросы подписчиков
Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;
#вопросы_новичков
@zen_of_python
system-design-primer | Учим проектирование больших систем
Годный способ подготовки к интервью. Содержит гайд, вопросы + ответы с интервью, карточки для запоминания. Для тех, кто доволен текущим местом работы, это отличный способ закрыть пробелы в познаниях о компонентах
Цена: бесплатно
Репозиторий проекта
@prog_tools
Больше не элита
Канадский писатель и активист Кори Доктороу анализировал изменения в положении IT-специалистов. Он отмечает, что раньше разработчики пользовались высоким спросом, что позволяло им диктовать условия труда. Однако в последние годы ситуация изменилась: компании начали массовые сокращения, увеличили нагрузку на оставшихся сотрудников и усилили контроль за их работой. Доктороу подчеркивает, что разработчики больше не являются «принцами труда» и теперь сталкиваются с теми же проблемами, что и рабочие на заводах или в доставке. Он призывает к солидарности и созданию профсоюзов как способу защиты прав работников в новых условиях рынка труда.
@zen_of_python
Data Engineering Landscape
Просить собрать вас бинго не буду, но так в 2025 году выглядит подборка топовых продуктов по 11 категориям.
А что бы вы сюда добавили из наших, импортозамещающих продуктов? Как минимум ClickHouse напрашивается.
#факт
@zen_of_python
Разработчики всё меньше доверяют ИИ, хоть и чаще к нему обращаются...
Stack Overflow провели большое исследование, в результате которого выяснили, что лишь 29% опрошенных считают ИИ надёжным.
Эти и другие любопытные факты — по ссылке.
#для_АйтИИ
vulnhuntr | Пусть уязвимости ищет LLM
Хватит уже плодить небезопасный нагенеренный код... Лучше искать с помощью ChatGPT / Cursor / Claude дыры в системах. Библиотека сканирует весь код питонического проекта и находит прорехи по типу SSRF, XSS и проч.
#инструмент
@zen_of_python