39269
Все самое полезное для питониста в одном канале. Список наших каналов: https://t.me/proglibrary/9197 Курс по ML: https://cl Для обратной связи: @proglibrary_feeedback_bot По рекламе: @proglib_adv РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
😱 Если ваш продукт не умеет отдавать данные в формате, понятном AI-агенту, то вас просто не существует
Скрипт не будет кликать по красивым кнопкам в браузере, он уйдёт к конкуренту с нормальным API. Перестроить архитектуру под машинных клиентов — это уже не хайп, а необходимое условие сохранения конкурентоспособности.
Как адаптировать продукт и не исчезнуть из выдачи:
— интегрировать MCP и A2A-взаимодействие, чтобы агенты могли вас читать;
— научиться контролировать стоимость (лимиты, кэш, роутинг между моделями);
— настроить AgentOps: трейсинг, логирование и отлов регрессий.
Всё это ждёт вас на обновлённом курсе «Разработка AI-агентов». Мы специально сделали фокус на утилитарном инжиниринге и production-ready решениях.
Кстати, до 29 марта можно забрать курс с большой скидкой, и стоит поторопиться — мест на потоке всё меньше.
Зафиксировать цену и начать деплоить агентов без слива бюджета 👈
📂 stdout и stderr: Два потока одного экрана
В операционных системах (Linux, macOS, Windows) каждому запущенному процессу по умолчанию открываются два выходных потока:
1. Standard Output (stdout): Сюда идет основной результат работы программы.
2. Standard Error (stderr): Сюда идут ошибки, предупреждения и диагностические сообщения.
В модуле sys эти потоки представлены как файлоподобные объекты. Функция print — это просто удобная обертка над ними.
🔛 Обычный вывод: print("Hello") или sys.stdout.write("Hello\n")
🔛 Вывод ошибки: print("Error!", file=sys.stderr) или sys.stderr.write("Error!\n")
🛠 Зачем разделять потоки
Главная причина — перенаправление (redirection). Представьте, что ваш скрипт обрабатывает 1000 файлов и записывает результат в лог. Если произойдет ошибка на 500-м файле, и вы пишете всё в один поток, ошибка «потеряется» внутри огромного текстового файла.
Примеры команд в терминале:
🔛 python script.py > output.txt — в файл попадет только stdout. Ошибки (stderr) по-прежнему будут видны на экране.
🔛 python script.py 2> errors.txt — на экране будет результат, а все ошибки уйдут в отдельный файл.
🔛 python script.py > all.txt 2>&1 — классический способ «склеить» потоки и записать всё в один файл.
💡 Когда стоит использовать stderr
Трей правильно замечает: stderr — это не только для критических ошибок. Используйте его для:
1. Tracebacks: Python сам пишет сюда дампы ошибок при падении.
2. Warnings: Модуль warnings использует этот поток.
3. Progress Bars: Если вы рисуете индикатор загрузки (например, через `tqdm`), лучше выводить его в stderr, чтобы он не засорял основной вывод данных.
4. Interactive Prompts: Вспомогательный текст (вроде приветствия в REPL) часто идет в stderr.
🏁 Практический совет
Если вы пишете CLI-утилиту, которой будут пользоваться другие люди (или ваши же скрипты):
> Всегда отправляйте полезные данные (те, что можно передать по цепочке другому скрипту через `|`) в stdout, а любые пояснения, логи и ошибки — в stderr.
🔥 AI Engineering Toolkit: 100+ инструментов для тех, кто строит на LLM
Прошли те времена, когда для создания ИИ-сервиса достаточно было одного API-ключа OpenAI.
Сегодня «AI Engineer» — это наполовину разработчик, наполовину архитектор данных и на 100% мастер автоматизации.
🔗 Ссылка на Github
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
🐸 Библиотека питониста
#развлекалово
⚡️ 100 дней IoT: для питонистов
Этот репозиторий — пошаговый план трансформации из «программиста интерфейсов» в инженера встроенных систем.
Автор использует MicroPython, ESP32 и Raspberry Pi Pico, что делает порог входа минимальным для любого питониста.
🔗 Ссылка на Github
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
✂️ 3+ способа убрать лишние пробелы в Python
Представьте, что у вас есть строка:"Это очень странное предложение."
Наша цель: оставить строго по одному пробелу между словами.
1. Золотой стандарт: Регулярные выражения (`re`)
Самый читаемый и производительный метод. Мы ищем паттерн «два и более пробела» и меняем его на один:
import re
def clean_spaces(text):
return re.sub(r" {2,}", " ", text)
def clean_spaces(text):
return " ".join(filter(None, text.split(" ")))
re.functools.Placeholder. Это позволяет нам крутить цикл замены replace(" ", " "), пока строка не перестанет меняться:
from functools import partial, Placeholder as _P
def fixedpoint(f, x):
while x != (x := f(x)):
pass
return x
# Заменяем два пробела на один, пока они не кончатся
space_replacer = partial(str.replace, _P, " ", " ")
clean_text = fixedpoint(space_replacer, "Много пробелов")
Почитали тут свежий отчёт по рынку ИИ-ускорителей в РФ: оказывается, 54% компаний тормозят внедрение ИИ исключительно из-за конских цен на инфраструктуру.
Ну, то есть написать пет-проект с вызовом API это задача на вечер, а вот запустить агента в продакшн так, чтобы он не сжёг бюджет отдела за неделю — суровая инженерия.
По сути, сейчас мало уметь собирать RAG. Нужно считать токены, настраивать time-travel дебаг в LangGraph и уметь роутить запросы на лету. Всё это мы учли в обновлённом курсе по разработке AI-агентов, где акцент сделан именно на AgentOps и жёсткий контроль ресурсов.
Также в программе:
— оценка качества, трейсинг и защита от деградации пайплайнов;
— мультиагентные паттерны и интеграция по протоколу MCP;
— локальный деплой Open Source под 152-ФЗ (когда данные нельзя выносить наружу).
Кажется, это единственный адекватный roadmap по переходу от блокнотов к enterprise-решениям.
Прямо сейчас можно урвать курс с увесистой скидкой (49 000 ₽ 62 990 ₽ за базовый тариф и 99 000 ₽ 124 990 ₽ за продвинутый трек), но стоит поторопиться — на потоке осталось всего 5 мест.
👉 Зафиксировать цену и начать собирать агентов, за которых не стыдно в проде
⚙️ Конфигурация в Python
Многие начинают с Option 1, потому что это быстро. Но по мере роста проекта поиск того, «откуда взялся этот API_KEY», превращается в детектив.
Почему Option 2 (Централизация) — это стандарт
Fail-Fast: Ваше приложение упадет при запуске, если забыт важный токен, а не через два часа работы, когда дело дойдет до вызова глубоко запрятанной функции.
Типизация: os.environ всегда возвращает строки. Если вам нужен RETRY_COUNT как int или DEBUG как bool, централизованный конфиг сделает приведение типов за вас.
Единый источник истины: Все настройки проекта видны в одном файле.
В 2026 году лучшим способом реализации Option 2 является библиотека pydantic-settings.
Она делает валидацию конфигурации автоматической:
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
db_url: str
api_key: str
debug: bool = False # Значение по умолчанию
# Автоматически читает из .env файла
model_config = SettingsConfigDict(env_file=".env")
settings = Settings()
🛡 Срочное обновление безопасности: Python 3.12.13, 3.11.15 и 3.10.20
Если ваш проект работает на одной из этих версий Python, пришло время обновиться. Команда core-разработчиков выпустила экстренные патчи, закрывающие серьезные уязвимости.
Так как эти ветки находятся в режиме security-fix-only, обновления доступны только в виде исходного кода.
🔐 Что исправили? (Основные моменты)
1. Инъекции в Email и HTTP-заголовки
Исправлены критические ошибки в email.generator и http.cookies. Теперь система жестко блокирует попытки вставить управляющие символы или некорректно «склеить» заголовки. Это защищает от атак типа *Header Injection*.
2. Защита от DoS-атак (Отказ в обслуживании)
Разработчики устранили несколько «узких мест» с квадратичной сложностью вычислений (уязвимости типа *ReDoS* и переполнение памяти):
— В парсинге параметров HTTP и XML.
— В обработке путей через os.path.expandvars().
— В модулях plistlib, http.client и http.server.
3. Безопасность XML и HTML
Обновлена библиотека libexpat до версии 2.7.4. Это закрывает свежие CVE 2026-го года, связанные с переполнением памяти при обработке вредоносных XML-файлов. Также усилен html.parser для работы с агрессивной разметкой.
4. Память и SSL
Исправлена опасная ошибка *use-after-free* (использование памяти после освобождения) в модуле ssl, которая могла возникать при сбое инициализации соединения.
🔗 Ссылка на новость
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
🐸 Библиотека питониста
#развлекалово
У «Библиотеки программиста» появился резервный канал в мессенджере MAX
Он нужен исключительно для связи с теми, кто не может следить за обновлениями здесь из-за трудностей с доступом. Поэтому, если вы видите это сообщение, распространите его среди жильцов вашего ЖЭКа.
Контент в MAX будет дублировать телеграмный — основной нашей площадкой был и остаётся Telegram. Надеемся, это временная мера.
→ Подписаться на «Библиотеку программиста» в MAX
🛠 Работа с Claude Code: от базовых настроек до автоматизации
Claude Code — это CLI-агент от Anthropic, который работает напрямую в вашем терминале.
Чтобы превратить его из простого чат-бота в полноценного напарника, стоит внедрить несколько продвинутых техник из недавнего гайда «45 советов».
🔗 Ссылка на Github
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Самый востребованный навык в ИТ в 2026-м — навык создания ИИ-агентов
Мы полностью переработали курс «Разработка AI-агентов» под реалии 2026 года. Никакой долгой теории — пишем код с первого дня. Обучать и делиться набитыми шишками будут эксперты-практики из Газпромбанка, Альфа-Банка и других бигтехов.
В программе:
— архитектура автономных систем с тестированием, ReAct-циклами и контролем токенов;
— практическая работа с актуальными фреймворками LangGraph, AutoGen, MCP и CrewAI;
— настройка продвинутого RAG для парсинга документов и точного поиска;
— внедрение решений с учётом действующего законодательства (152-ФЗ);
— дипломная работа, за основу которой можно взять свой рабочий проект или задачу, которую предложим мы.
Эксперты поделятся инсайтами из реального продакшна — тем, о чём вам никогда не расскажет ни одна нейросеть.
Запись первого открытого вебинара, на котором мы вместе с руководителем AI-направления в Альфа-Банке Полиной Полуниной пилили агента в прямом эфире.
🚀 Мастер-класс по Python: от «Hello World» до профи
Если вы ищете структурированный и интерактивный способ выучить Python в 2026 году, этот курс — отличная точка входа. Здесь нет «воды», только живой код и практика.
Курс разбит на логические блоки (12 модулей, 71 урок), которые ведут вас от основ к профессиональной разработке.
🔗 Ссылка на курс
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
The Algorithm Design Manual считается «Библией» для подготовки к собеседованиям в BigTech и незаменимым справочником для тех, кому нужно решать реальные задачи, а не просто доказывать теоремы.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
🐸 Библиотека питониста
#развлекалово
🚀 Python 3.15: JIT-компилятор официально «встал на рельсы»
Хорошие новости для всей экосистемы: волонтерская команда CPython совершила прорыв. Новый JIT-компилятор (Just-In-Time), который буксовал в версиях 3.13 и 3.14, в альфа-версии Python 3.15 наконец-то начал показывать реальный прирост скорости.
Цели по производительности достигнуты с опережением графика:
➕ +11–12% ускорения на macOS (AArch64).
➕ +5–6% ускорения на Linux (x86_64).
➕ В отдельных сценариях зафиксирован рост производительности более чем на 100%.
Core Developer выделил три ключевых архитектурных решения:
1. Вместо компиляции отдельных методов, JIT теперь «подсматривает» за реально исполняемыми путями кода. Благодаря системе Dual Dispatch, основной интерпретатор остается быстрым, а JIT включается только там, где это эффективно. Это увеличило покрытие кода оптимизациями на 50%.
2. В Python управление памятью (`refcounts`) очень ресурсозатратно. Раньше каждая такая операция в JIT сопровождалась проверкой (ветвлением). Команда убрала эти лишние проверки в машинном коде, что дало колоссальный накопительный эффект.
3. После потери спонсорского финансирования проект перешел в руки сообщества. Сложные части JIT разбили на мелкие блоки, что позволило обычным C-разработчикам вносить вклад без глубоких знаний в теории компиляторов.
🔗 Ссылка на новость
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
🔥 Python 3.15 JIT: главные цифры
После трудностей в версиях 3.13 и 3.14, где JIT иногда даже замедлял работу, команда достигла прорывных показателей:
* +11–12% ускорения на macOS (AArch64).
* +5–6% на Linux (x86_64).
* В отдельных сценариях прирост доходит до 100% (двукратное ускорение!).
---
### 🛠 За счет чего произошел прорыв?
Кен Джин выделяет три технических «счастливых ставки», которые сработали:
#### 1. Трассирующая запись (Trace Recording)
Вместо того чтобы пытаться компилировать всё подряд, JIT теперь использует «умный» фронтенд.
* Dual Dispatch: Кен реализовал систему с двумя таблицами диспетчеризации. Это позволило оставить основной интерпретатор максимально быстрым, добавив лишь одну инструкцию для трассировки.
* Результат: Покрытие кода JIT-ом выросло на 50%.
#### 2. Удаление подсчета ссылок (Reference Count Elimination)
В Python управление памятью завязано на подсчете ссылок (`refcounts`). Раньше каждая такая операция в JIT сопровождалась дорогостоящей проверкой (ветвлением).
* Команда убрала лишние ветвления в машинном коде.
* Поскольку эти проверки происходят почти в каждой инструкции, эффект «накопительного ускорения» оказался колоссальным.
#### 3. Сообщество и «Мега-задачи»
Когда проект потерял основного спонсора в 2025 году, разработка перешла в руки волонтеров. Секрет успеха оказался в декомпозиции: сложные задачи JIT разбили на простые блоки, которые смог реализовать обычный C-программист без опыта в компиляторах.
---
### 🏁 Что это значит для нас?
1. 3.15 будет быстрее «из коробки»: Мы получаем честный прирост производительности без изменения кода.
2. Свободные потоки (Free-threading): Команда уже работает над поддержкой JIT для Python без GIL (Global Interpreter Lock). Это цель на версии 3.15/3.16.
3. JIT go brrr: Если раньше JIT был экспериментальной игрушкой, то теперь это серьезная технология, которая начинает оправдывать ожидания.
Как вы думаете, станет ли JIT в Python 3.15 поводом отказаться от специализированных решений вроде PyPy или Mojo для ваших задач? 👇
🔥 TorchCode — LeetCode для PyTorch
TorchCode — интерактивная среда (в Jupyter), где ты решаешь задачи по PyTorch, как на алгоритмических платформах.
40+ задач — от базовых до продвинутых
🔗 Ссылка на платформу
Библиотека дата-сайентиста
#буст
📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих»
Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!
🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП – инкапсуляция и наследование
🐍 Часть 19: Основы ООП – абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas
Почитали тут свежий отчёт по рынку ИИ-ускорителей в РФ: оказывается, 54% компаний тормозят внедрение ИИ исключительно из-за конских цен на инфраструктуру.
Ну, то есть написать пет-проект с вызовом API это задача на вечер, а вот запустить агента в продакшн так, чтобы он не сжёг бюджет отдела за неделю — суровая инженерия.
По сути, сейчас мало уметь собирать RAG. Нужно считать токены, настраивать time-travel дебаг в LangGraph и уметь роутить запросы на лету. Всё это мы учли в обновлённом курсе по разработке AI-агентов, где акцент сделан именно на AgentOps и жёсткий контроль ресурсов.
Также в программе:
— оценка качества, трейсинг и защита от деградации пайплайнов;
— мультиагентные паттерны и интеграция по протоколу MCP;
— локальный деплой Open Source под 152-ФЗ (когда данные нельзя выносить наружу).
Кажется, это единственный адекватный roadmap по переходу от блокнотов к enterprise-решениям.
Прямо сейчас можно урвать курс с увесистой скидкой (49 000 ₽ 62 990 ₽ за базовый тариф и 99 000 ₽ 124 990 ₽ за продвинутый трек), но стоит поторопиться — на потоке осталось всего 5 мест.
👉 Зафиксировать цену и начать собирать агентов, за которых не стыдно в проде
🏛 Когда пора создавать класс в Python
1. Требование фреймворка
Самый частый случай: вы используете библиотеку (Django, SQLAlchemy, Pydantic), где класс — это интерфейс. Например, в Django класс Model — это способ описать таблицу в базе данных. Здесь у вас просто нет выбора.
2. Вы постоянно передаете одни и те же данные в функции
Если у вас есть 5 функций, и каждая из них первым аргументом принимает один и тот же объект (например, server_connection или `user_session`), — это явный сигнал.
Вместо того чтобы «таскать» объект за собой, сделайте его атрибутом класса (`self.connection`), а функции превратите в методы. Код станет чище, а вызовы — короче: connection.send() вместо send_data(connection, data).
3. Улучшение читаемости и структуры данных
Иногда класс нужен просто для того, чтобы дать данным имя.
Плохо: Функция возвращает кортеж (103, 29). Что это? Ширина и высота? Или координаты X и Y?
Хорошо: Функция возвращает объект TerminalSize(columns=103, lines=29). Теперь любой, кто читает ваш код, сразу понимает, что происходит.
👉 Полная статья с полезностями
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
awesomePrep: полноценный тренажер к интервью по Python (424 вопроса)
awesomePrep — это бесплатный open-source проект, который превращает подготовку к техническому собесу в структурированный процесс.
🔗 Ссылка на платформу
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
➡️ Чит-лист по Claude Code (Workflow 2026)
Claude Code — это не просто CLI, а полноценная среда для автономного кодинга. Чтобы он не «галлюцинировал», нужно правильно выстроить иерархию памяти:
CLAUDE.md — файл в корне проекта, который содержит техстек, архитектуру и правила (Style Guide). Claude читает его первым.
Skills (Навыки) — создавайте .md файлы в папке .claude/skills/. Описывайте там паттерны тестирования или правила деплоя — Claude вызовет их автоматически через NLP.
Иерархия памяти: используйте глобальный CLAUDE.md для общих правил и локальные файлы в подпапках для специфического контекста (например, только для фронтенда).
Команды-выручалочки:
/init — просканировать проект и создать базу знаний.
/compact — сжать контекст, когда беседа стала слишком длинной (экономит токены!).
Esc Esc — быстрый возврат в меню.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
Кажется, мы окончательно перешли от игрушек к суровому AgentOps
Приглашаем на наш обновлённый курс по разработке ИИ-агентов. Никакой воды про «будущее нейросетей», только инженерный подход.
Что внутри:
— пошагово строим готовые системы на LangGraph, CrewAI и MCP;
— настраиваем кэширование и роутинг, чтобы бот не сожрал токены;
— разбираемся со стейтом, учимся дебажить через time-travel и прикручиваем human-in-the-loop;
— выводим RAG в прод так, чтобы безопасники не завернули архитектуру из-за 152-ФЗ.
В пекло скучные лекции про общую инфраструктуру — сразу фокусируемся на агентных фреймворках и написании кода. Занятия ведут бывалые лиды из Газпромбанка и Альфы, набившие шишки на реальных задачах.
Кстати, на днях мы пилили агента в прямом эфире, если пропустили — есть запись вебинара.
🔥 Гид по Python-экосистеме: что стоит внедрить в 2026 году
Python уже давно перерос роль «языка для скриптов». Сегодня это фундамент для автономных агентов и высоконагруженных систем. В этом обзоре — библиотеки, которые меняют правила игры в разработке, аналитике и безопасности.
📌 Чтобы не потерять вакансии и анонсы — добавь папку
➡️ Общего назначения
✳️ ty — сверхбыстрый type checker нового поколения
✳️ complexipy — измеряет сложность кода так, как её чувствует человек
✳️ Kreuzberg — извлечение данных из 50+ форматов
✳️ hrottled-py — rate limiting с 5 алгоритмами
✳️ httptap — HTTP waterfall прямо в терминале
✳️ fastapi-guard — безопасность FastAPI без боли
✳️ modshim — расширяй модули без monkey-patching
✳️ Spec Kit — спецификации → рабочий код
✳️ Skylos — dead code + уязвимости
✳️ FastOpenAPI — OpenAPI для любого фреймворка
➡️ AI / ML / Data
✳️ MCP Python SDK + FastMCP — стандарт интеграции LLM с инструментами
✳️ TOON — JSON, оптимизированный под токены
✳️ Deep Agents — агенты с планированием и памятью
✳️ smolagents — агенты, которые думают кодом
✳️ LlamaIndex Workflows — event-driven AI workflows
✳️ Batchata — дешёвые batch-запросы к LLM
✳️ MarkItDown — любые файлы → Markdown
✳️ Data Formulator — анализ данных через natural language
✳️ LangExtract — точное извлечение сущностей из текста
✳️ GeoAI — ML + геоданные без боли
👉 Детально, с примерами и разбором — в полной статье
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
🛠 PEP 810: эволюция импортов в Python
История внедрения lazy import — это не просто рассказ о новой фиче, а настоящий мастер-класс по тому, как сообщество Python умеет работать над ошибками и находить баланс между производительностью и стабильностью.
📉 Почему PEP 690 (первая попытка) провалился
В 2022 году Meta предложила радикальный подход: флаг -L, делающий все импорты ленивыми по умолчанию. Управляющий совет (Steering Council) наложил вето по веским причинам:
— Фрагментация: Это создало бы «два разных Python», где библиотеки вели бы себя по-разному.
— Скрытые сайд-эффекты: Огромное количество legacy-кода завязано на логике, которая выполняется строго в момент импорта.
— Сложность отладки: Ошибки инициализации могли «всплывать» в самых неожиданных местах рантайма.
🚀 Почему PEP 810 (текущий) — это победа
Дизайн был полностью переосмыслен. Вместо неявного глобального флага мы получили явный синтаксический сахар:
1. Явность (Opt-in): Вводится новое «мягкое» ключевое слово lazy. Вы сами помечаете тяжелые зависимости, которые не нужны при старте.
# Python 3.15+
lazy import torch
lazy from matplotlib import pyplot as plt
dict. PEP 810 изящнее — он создает легкий прокси-объект. Реальный импорт триггерится только в момент первого обращения к атрибуту объекта.lazy import есть свои «но»:lazy from module import * вызовет SyntaxError, так как интерпретатору нужно знать список имен заранее.ModuleNotFoundError теперь вылетит не в начале скрипта, а в строке, где вы впервые вызвали torch.save(). Это нужно учитывать при написании долгоживущих сервисов.
🚀 Polars 1.39: новая версия
Библиотека Polars продолжает сокращать разрыв между локальной обработкой данных и полноценными хранилищами данных (Data Lakehouses).
Версия 1.39 принесла три ключевых фичи, которые сильно упростят жизнь дата-инженерам.
📈 1. Streaming AsOf Join
Функция join_asof() теперь поддерживается стриминговым движком.
Теперь можно объединять огромные временные ряды (time-series), которые не помещаются в оперативную память.
Идеально для финансового анализа и данных с датчиков (IoT), где нужно сопоставить события по ближайшей метке времени.
🧊 2. Полноценный цикл с Apache Iceberg
В дополнение к чтению (`scan_iceberg`), появился sink_iceberg() для записи данных из LazyFrame.
Polars теперь поддерживает полный цикл чтения/записи для архитектур Data Lakehouse на базе Iceberg.
Можно обрабатывать данные и сохранять их напрямую в аналитические таблицы без промежуточных CSV/Parquet файлов.
☁️ 3. Стриминг прямо из облака
Функции scan_csv(), scan_ndjson() и scan_lines() теперь умеют скачивать данные потоково.
Polars больше не нужно скачивать файл целиком из S3 или Azure Blob перед началом обработки.
Значительная экономия места на диске и ускорение «холодного» старта ваших скриптов.
🔗 Ссылка на релиз
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
🐍 Python совет: if при подсчете элементов
Один из самых частых паттернов у новичков — использование условий для проверки наличия ключа в словаре при подсчете. Это работает, но выглядит громоздко и совсем не «по-питонячьи».
❌ Как делать не стоит (многословно):
counts = {}
for item in items:
if item in counts:
counts[item] += 1
else:
counts[item] = 1
from collections import defaultdict
counts = defaultdict(int) # указываем тип int как дефолтный (даст 0)
for item in items:
counts[item] += 1
defaultdict(int), вы говорите Python: «Если ключа нет, создай его и присвой значение, которое возвращает функция int(), то есть **0**».if item in counts.Counter:
from collections import Counter
counts = Counter(items)
print(counts.most_common(3)) # Бонус: сразу получаем топ-3 элемента
⏳ Часовая готовность: создаём ИИ-агента в прямом эфире
В 19:00 МСК в рамках нашего курса «Разработка AI-агентов» стартует вебинар «ИИ-агенты в продакшене: от хайпа к деньгам». Спикер — Полина Полунина, руководитель AI-направления в Альфа-Банке.
Будет live-демо работающего агента, реальные метрики из корпоративной среды и честный разбор архитектурных граблей — без воды и «успешного успеха».
Всем зрителям эфира дадим эксклюзивный промокод AGENTS на скидку 10 000 ₽ на любой тариф курса.
👉 Занять место на вебинаре