20070
Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL
Когда хотел просто поиграть, но случайно спас марсианскую базу…
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
Byte of Python | Бесплатный учебник, ставший классикой
Сейчас лето, и при должном везении ваш работодатель слегка расслабился. Можно и книжку почитать.
«Укус питона» — известный бесплатный учебник, который можно скачать в форматах .pdf / .epub вместе с Python-скриптами прямо из репозитория автора Сварупа.
Спасибо @Chellbas за рекомендацию.
#основы
@zen_of_python
Вопрос подписчика
Задает @Python3k:
«Что-бы такое интересно покодить? 🤔»
NB! Пожалуйста, будьте взаимовежливы. Однажды и вам помогут в этой рубрике.
От админа: сейчас вам накидают неоплачиваемой работы 😆
#обсуждение
@zen_of_python
Вопрос подписчика
Задает @terisht:
«2 вопроса в одном. Находил ли кто-то либы по архивации файлов на расте для python? И, если такие есть, кто-то мерил насколько они более профитны чем дефолтный zipfile питонячий?»
NB! Пожалуйста, будьте взаимовежливы. Однажды и вам помогут в этой рубрике.
#обсуждение
@zen_of_python
uqlm | Фактчекинг ответа LLM
Проблеме галлюцинаций LLM сейчас уделяется немало внимания, и в опенсорсе тоже нашлись умельцы. Библиотека выполняет фактчекинг нагенеренного, предже чем оно отправится юзеру. На идеальное решение авторы не претендуют, потому каждому ответу присваивается скор уверенности в достоверности. Давно пора было!
Цена: бесплатно
@zen_of_python
Импортируешь логгер, чтобы написать logger.warn("here")
@ithumor
Полезный мем: переменные или методы, имена которых начинаются с двойного подчёркивания (например, __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
Вопрос подписчика
Задает @Jack_Frost13:
«Вопрос по LLM
Какие LLM можно подключить как агента, чтобы он делал работу по инструкции за меня (ML), какие модели лучше всего подойдут для этого и как это организовать?»
ИИ против разума: битва за навыки программиста
Сегодня многие программисты всё чаще доверяют работу LLM, теряя навык писать даже базовые конструкции вроде простого цикла. Но большие языковые модели не понимают реальную архитектуру проекта, а лишь подбирают правдоподобный текст. В итоге ключевая ответственность — понимание задачи, принятие архитектурных решений и контроль качества — всё ещё остаётся за живым человеком. В статье на Tproger разобрались, как сохранить за собой гордое звание «разработчик», а не «одобрятор автокомплита».
#LLM
@zen_of_python
Вы точно знаете отличия между or и and?
Каким будет результат выражения:
5 or 0
0, "", [], {}, None, 0.0bool(obj) конвертирует объект в логическое значение, но сами and / or возвращают ненулевые сущности: последний вычисленный операнд.
5 or 0 # → 5 (первый truthy)
0 or 7 # → 7 (второе значение, truthy)
0 or '' or None # → None (все falsy, возвращается последний)
5 and 0 # → 0 (первый Falsy)
5 and 7 # → 7 (оба Truthy, возвращаем последний)
0 and 5 # → 0 (первый Falsy — возвращён)
not (наивысший)andor (наинизший)
True or False and False # → True, т. к. это эквивалентно True or (False and False)
(not False) or True # → True, сначала выполняется not.
nd / or без промежуточных переменных;
Если из компьютера вылез питончик, то вы кодите правильно. Это пасхалка от PSF
#кек
@zen_of_python
Вопросы подписчиков
Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;
#вопросы_новичков
@zen_of_python