Библиотека питониста | Python, Django, Flask
37.8K subscribers
3.28K photos
102 videos
62 files
5.01K links
Все самое полезное для питониста в одном канале.

Учиться у нас: clc.to/6e5Csg

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36

#WXSSA
Download Telegram
🏆 7 бесплатных курсов по Python

Хочешь прокачать Python, но не знаешь, с чего начать или куда двигаться дальше?

Вот подборка курсов, которые реально помогут:

1. Программирование для каждого (Начало работы с Python)

2. Computing in Python I: Fundamentals and Procedural Programming

3. An Introduction to Interactive Programming in Python (Part 1)

4. Scientific Computing with Python

5. Crash Course on Python

6. Introduction to Computer Science and Programming Using Python

7. Using Python for Research

📍 Навигация: ВакансииЗадачиСобесы

Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
⚠️ В Python откатили новый сборщик мусора

Неожиданная новость из мира Python: новый incremental GC, который добавили в 3.14, решили откатить назад.

После релиза Python 3.14 начали приходить жалобы — в продакшене выросло потребление памяти. Не у всех, но проблема оказалась достаточно серьёзной.

👉 Что решили:
— убрать новый GC из 3.14 и 3.15
— вернуть старый, проверенный generational GC из 3.13
— возможно, попробовать снова в 3.16, но уже через полноценный PEP и тестирование

Даже несмотря на то, что это патч-релиз (что обычно не делают), старый GC — предсказуемый и стабильный, а новый не прошёл полноценный процесс обсуждения.

👉 Интересный момент:
Идею оставить оба GC (на выбор) обсуждали, но отказались — слишком сложно поддерживать и рискованно.

🔗 Ссылка на новость

📍 Навигация: ВакансииЗадачиСобесы

Библиотека питониста

#свежак
👍8👾21😢1
🔐 Как безопасно работать с пакетами из PyPI

Появилась крутая подборка best practices по безопасности Python-зависимостей — максимально практичная и без воды.

👉 Что внутри:
— безопасные настройки pip и uv по умолчанию
— защита от supply chain атак
— как фиксировать версии зависимостей (и зачем это критично)
— проверка уязвимостей и «здоровья» пакетов

Недавние инциденты показали, что всё это — не теория:
— атака через пакет LiteLLM/Telnyx → 119k+ загрузок вредоносного кода за пару часов
— куча проектов до сих пор ставит зависимости без фиксированных версий

И всё — у тебя в проде чужой код.

📌 Хороший чек-лист, чтобы пройтись по своему проекту и закрыть дыры.

📍 Навигация: ВакансииЗадачиСобесы

Библиотека питониста

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 Plain — новый Python-фреймворк, переосмысленный под эпоху AI-агентов

Появился интересный проект — Plain Python framework.
Это форк Django, но сильно переработанный под современные реалии.

💡 Что отличает Plain:
— строгая типизация «из коробки» (типы проходят через всё: модели → вьюхи → API)
— PostgreSQL-only (никаких компромиссов с БД)
— минимализм и явность вместо «магии»
— встроенная наблюдаемость (трейсы, медленные запросы и т.д.)

🤖 Самое интересное — интеграция с агентами:
— встроенные “rules” (чтобы агент не косячил)
— доступ к документации прямо из CLI
— команды вроде /plain-optimize или /plain-bug

То есть фреймворк буквально проектируется так, чтобы с ним работали AI-кодеры.

30+ пакетов: от auth и API до аналитики, фич-флагов и админки — всё в одном стиле и с общей философией.

Plain — это попытка переизобрести Django под новую реальность, где код пишет не только человек, но и агент.

Пока сырой, но направление очень показательное.


👇 Cтали бы пробовать такой стек вместо Django/FastAPI?

📍 Навигация: ВакансииЗадачиСобесы

Библиотека питониста

#свежак
👾7👍3🌚3
🧠 10 паттернов по массивам, которые закрывают 80% задач на собеседованиях

1️⃣ Два указателя
Когда нужно работать с отсортированным массивом или искать пары/подотрезки

2️⃣ Скользящее окно
Для подмассивов: максимум, сумма, длина и т.д.

3️⃣ Префиксная сумма
Позволяет считать суммы отрезков за O(1)

4️⃣ Алгоритм Кадане
Максимальная сумма подмассива за линейное время

5️⃣ Бинарный поиск
Не только по массиву — ещё и «по ответу»

6️⃣ Циклическая сортировка
Когда числа лежат в диапазоне [1..n] и нужно найти пропуски/дубликаты

7️⃣ Слияние интервалов
Все задачи, где есть пересечения диапазонов

8️⃣ Монотонный стек
Для «следующего большего/меньшего элемента»

9️⃣ Хэш-таблица
Когда нужен быстрый lookup (часто — O(n) вместо O(n²))

🔟 Сортировка + жадный подход
Сначала упорядочил → потом выбрал оптимально

📍 Навигация: ВакансииЗадачиСобесы

Библиотека питониста

#буст
6👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🌚3🥱1
🗓 В следующий вторник (28.04) в 19:00 встречаемся в онлайне.

Тема:
Как эффективно управлять контекстным окном LLM в мультиагентных системах и не сливать бюджет на токены


В кружке Кирилл рассказал, какие именно подходы будем разбирать.

👉 Занять место на вебинаре
Please open Telegram to view this post
VIEW IN TELEGRAM
👾1
🐍 Python-чек-лист — всё, что нужно под рукой

Если вы работаете с Python — удобно иметь один список, который закрывает основные задачи: от базового кода до продакшена.

📍 Навигация: ВакансииЗадачиСобесы

Библиотека питониста

#буст
👍63
🌳 Деревья в алгоритмах — быстрый гайд по иерархическим структурам

Деревья — одна из самых частых тем на собеседованиях и в реальных системах.
Если понять базу, закрывается огромный пласт задач.

👉 Что такое дерево:

Это структура данных, где элементы связаны иерархически: есть корень → ветки → листья.

Примеры из жизни:
— файловая система
— DOM в браузере
— организационные структуры

Базовые типы деревьев:
— Бинарное дерево — у каждого узла максимум 2 потомка
— Бинарное дерево поиска (BST) — слева меньше, справа больше
— Сбалансированные деревья (AVL, Red-Black) — держат высоту под контролем
— Trie — для строк и префиксов

📍 Навигация: ВакансииЗадачиСобесы

Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
🚀 Polars 1.40.0: свежий апдейт

Polars явно движется в сторону out-of-core обработки.

🔥 Что реально важно

— Streaming join_asof (с группировками)
Если вы работаете с таймсериями — это закрывает давнюю боль.
Теперь можно джойнить огромные таблицы по времени без MemoryError.

👉 Новый менеджер памяти (spill-to-disk)
Если раньше всё упиралось в RAM — теперь Polars может аккуратно сбрасывать часть данных на диск.

Половина обновления — это перенос операций в streaming:
cov, corr, skew, kurtosis → теперь можно считать на больших данных
strptime → тоже стримится
— оптимизация sort → меньше лишних операций

Если вы используете:

.lazy().collect(streaming=True)


— профит стал заметно выше.

Другие мелочи, которые экономят время:
.unnest() теперь работает без аргументов
merge_sorted для уже отсортированных данных
— более аккуратные дефолты при чтении файлов

На что обратить внимание:
— убирают dataframe interchange → если Вы связывали разные библиотеки, проверьте пайплайн
— исправили кучу багов (pivot, CSV, parquet-статистика и др.)


pip install -U polars


🔗 Ссылка на релиз

📍 Навигация: ВакансииЗадачиСобесы

Библиотека питониста

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
🔥 Кого реально стоит читать питонисту в 2026

Давайте соберём «карту внимания» 👇

Кого вы реально читаете / смотрите из мира Python и IT? Кого-то из русскоязычной тусовки?

Не просто «знаю имя», а за кем следите регулярно — блоги, Twitter/X, YouTube, Telegram, GitHub.

👉 Формат простой

Кидайте в комменты:
— ник / имя
— где читаете (YouTube, TG, X и т.д.)
— за что именно (разборы, код, мысли, карьера и т.п.)

Я начну:
Guido van Rossum — иногда пишет, но это база
Armin Ronacher — мысли про Python и backend
Andrej Karpathy — топ про AI и код

📍 Навигация: ВакансииЗадачиСобесы

Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
📌 Шпаргалка по Python для новичков: краткий справочник

🔢 Переменные и типы данных
Python — язык с динамической типизацией (вам не нужно указывать тип данных вручную).

🔢 Коллекции данных
— List (Списки): Изменяемые, упорядоченные (`[1, 2, 3]`).
— Tuple (Кортежи): Неизменяемые (`(1, 2, 3)`).
— Set (Множества): Только уникальные элементы, без порядка (`{1, 2, 3}`).
— Dict (Словари): Пары "ключ: значение" (`{"name": "Siree"}`).

🔢 Условные операторы
Используются для логических развилок:
if — если условие верно.
elif — если предыдущее не подошло, проверяем это.
else — если ничего не подошло.

🔢 Циклы
for — для перебора элементов (например, в диапазоне `range`).
while — выполняется, пока условие истинно.

🔢 Функции
Объявляются через ключевое слово def. Позволяют группировать код для повторного использования.

🔢 List Comprehension (Генераторы списков)
Крутая фишка Python, позволяющая создавать новые списки в одну строку. Например:
squares = [x**2 for x in nums] — возводит каждое число из списка в квадрат.

🔢 Обработка исключений
Блок try...except нужен, чтобы программа не "падала" при возникновении ошибки (например, при попытке превратить буквы в число).

🔢 Работа с файлами
Всегда рекомендуется использовать конструкцию with open(...), так как она автоматически закрывает файл после работы с ним.

🔢 ООП (Классы и Объекты)
Классы позволяют создавать свои структуры данных с методами (функциями) и атрибутами (переменными).
__init__ — конструктор, который срабатывает при создании объекта.

📍 Навигация: ВакансииЗадачиСобесы

Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3😁21🥱1
🔥 База по ИИ-агентам от научного сотрудника Сколтеха и НИУ ВШЭ

Знакомьтесь, Екатерина Трофимова. Кандидат компьютерных наук, ресерчер в Центре ИИ Сколтеха и лаборатории LAMBDA. Она объединяет глубокую академическую экспертизу и практику: знает, как ИИ-системы устроены «под капотом» и как встроить их в реальные проекты (в т.ч. для Т-банка).

Мы попросили Екатерину собрать список мастхев материалов для тех, кто хочет проектировать агентов в проде. Сохраняйте список.

🛠 Стек и фреймворки:

DSPy — алгоритмическая оптимизация промптов (вместо ручного подбора слов).

Semantic Kernel и LangMem — инструменты для управления сессионной и долгосрочной памятью.

MCP (Model Context Protocol) — новый стандарт от Anthropic для подключения агентов к вашим БД и локальным файлам.

📖 Документация, которую нужно знать:

Anthropic Prompt Caching — как кэшировать контекст и радикально резать косты на API.

OpenAI Agents SDK / Cookbook — лучшие практики работы с памятью.

Augment — платформа для оптимизации работы ИИ-агентов и контроля токенов.

🔬 Хардкорные статьи и препринты (на выходные):

Lost in the Middle — почему LLM «слепнут» на длинных текстах и забывают середину контекста.

How Do Coding Agents Spend Your Money? — куда улетает бюджет при работе автономных кодинг-агентов.

MemGPT — архитектура операционной системы для LLM с иллюзией бесконечной памяти.

InjecAgent / AgentSentry — всё о безопасности и защите агентов от инъекций в промпты.

Екатерина Трофимова — один из ключевых экспертов нашего курса AgentOps. На своих лекциях она детально разбирает, как проектировать инструменты для агентов, как агент принимает решения о вызове инструментов и какие ограничения возникают в реальном проде

🎁 Акция в честь старта продаж!

Прямо сейчас при покупке Инженерного трека вы получаете полный доступ к материалам курса «Разработка ИИ-агентов» в подарок.

👉 Забрать 2 курса по цене 1 и начать обучение
5😁2👾1
🔥 Как сейчас обстоят дела с Python type-checker’ами

🚀 Если коротко, рынок заметно сдвинулся: Pyrefly и Ty уже не просто «альтернатива», а реальные лидеры по скорости. И это видно не только в тестах, а на реальных проектах.

⏱️ На практике это выглядит так:
— маленькие проекты: разница почти незаметна (доли секунды)
— средние и большие: разрыв становится драматичным
— где Pyright/Mypy → десятки секунд или минуты
— Pyrefly/Ty → обычно укладываются в секунды

В CI или при активной разработке это напрямую превращается в экономию времени и более быстрый фидбек.

🧠 Отдельно про память — и тут тоже есть разница:
— Pyrefly часто потребляет меньше RAM
— особенно заметно на больших проектах
— пример с numpy:
• Pyright → ~70 сек и >3 ГБ
• Pyrefly → ~4.8 сек и ~1 ГБ

⚖️ Поэтому выбор всё ещё зависит от приоритетов:
— нужна стабильность → смотри в сторону Mypy/Pyright
— важна скорость → Pyrefly/Ty уже впереди

🔛 Полный обзор

📍 Навигация: ВакансииЗадачиСобесы

Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52🤩2
🖥 Как настроить логирование в Textual (файл + живая консоль)

Если вы разрабатываете TUI на Textual, у вас уже есть удобный инструмент для логирования «из коробки» — без дополнительных библиотек.

В Textual есть встроенный TextualHandler, который полностью совместим со стандартным модулем Python logging module.

Это позволяет одновременно:
— сохранять логи в файл
— видеть их в реальном времени в консоли
— использовать привычный logging без изменений

👉 Минимальная настройка


import logging
from textual.logging import TextualHandler

logger = logging.getLogger("app")
logger.setLevel(logging.INFO)

# запись в файл
file_handler = logging.FileHandler("app.log")
logger.addHandler(file_handler)

# вывод в Textual
textual_handler = TextualHandler()
logger.addHandler(textual_handler)


Теперь все logger.info(...) будут записываться и в файл, и в интерфейс.

⚡️ Как смотреть логи в реальном времени

1. Установите devtools:

pip install textual-dev


2. В отдельном терминале запустите:

textual console


3. Приложение запускайте в dev-режиме:

textual run --dev app.py


👉 После этого вы будете видеть все события и логи в отдельной консоли.

Почему это удобно:
— не нужно переключаться между интерфейсом и терминалом
— проще отслеживать действия пользователя
— удобно дебажить поведение приложения

📍 Навигация: ВакансииЗадачиСобесы

Библиотека питониста

#буст
👍83
🚀 Современный паттерн «Состояние» в Python: прощай, наследование

Традиционная реализация паттерна State через классы и наследование часто превращается в кошмар: куча мелких классов, дублирование методов и разбросанная логика переходов. В Python есть более элегантный способ.

В чем проблема классики?
В обычном ООП-подходе каждое состояние — это отдельный класс. Это приводит к тому, что вы пишете много одинаковых методов raise RuntimeError, если действие недоступно в текущем состоянии. В итоге сложно увидеть всю картину переходов целиком.

Pythonic-подход: Дженерики и Декораторы
Вместо иерархии классов можно создать универсальный движок State Machine, который работает как явная таблица соответствий:
(Текущее состояние + Событие) -> (Следующее состояние + Действие).

Основные фишки такого дизайна:
1️⃣ Генерики (`Generic`): Движок типизируется через состояния, события и контекст (например, данные о платеже).

2️⃣ Декораторы @transition: Позволяют описывать логику переходов прямо над функциями действий. Это превращает ваш код в читаемую спецификацию: сразу видно, какие события переводят систему из одного статуса в другой.

3️⃣ Принцип открытости/закрытости: Чтобы добавить новый переход, вам не нужно менять существующие классы — достаточно написать новую функцию с декоратором.

4️⃣ Гибкость: Одно действие (например, «ошибка») можно легко привязать сразу к нескольким начальным состояниям через итерируемые объекты в декораторе.

Этот подход идеален для систем с четкими потоками данных: платежи, обработка заказов, логистика или парсеры. Классические классы стоит оставить только в случаях, когда каждое состояние имеет крайне сложную внутреннюю логику и специфичные только для него данные.

📍 Навигация: ВакансииЗадачиСобесы

Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2
📚 В Read the Docs теперь нативно поддерживается uv Python package manager

Небольшая, но очень приятная новость для тех, кто собирает документацию.

Теперь uv можно использовать прямо в .readthedocs.yaml — без костылей и кастомных шагов установки.

💡 Что это даёт
— быстрее установка зависимостей
— чище конфигурация
— нормальная поддержка pyproject.toml и uv.lock

Если используете современный стек:

python:
install:
- method: uv
command: sync
groups:
- docs


Если остались на requirements.txt:

python:
install:
- method: uv
command: pip
requirements: docs/requirements.txt


💬 Если у вас документация ещё на pip — возможно, это тот самый момент попробовать перейти.

📍 Навигация: ВакансииЗадачиСобесы

Библиотека питониста

#буст
3🔥1
🐍 Python tip: как писать чище — `enumerate()` + распаковка

Иногда в цикле вам нужно сразу две вещи:
номер элемента и значения внутри него.

Вместо лишнего кода это можно сделать в одну строку:

for index, (service, status) in enumerate(services, start=1):


Что здесь происходит:
enumerate() даёт вам индекс,
а (service, status) сразу распаковывает кортеж.

Код получается заметно чище:
не нужно заводить отдельный счётчик,
не нужно писать item[0], item[1],
и в целом легче читать, что происходит.

Особенно полезно, если работаете с:
— API-ответами
— списками кортежей
— логами / мониторингом

📌 По сути, это маленький приём, который сильно улучшает читаемость.

А вы как обычно пишете такие циклы — через распаковку или по индексам?

📍 Навигация: ВакансииЗадачиСобесы

Библиотека питониста

#буст
👍83
🗓️ Уже через пару часов стартует вебинар!

Тема:
Как эффективно управлять контекстным окном LLM в мультиагентных системах и не сливать бюджет на токены


Ждем вас сегодня в 19:00 по московскому времени. Не пропустите начало, будет много практики!

👉 Успей занять место