Библиотека питониста | Python, Django, Flask
40.1K subscribers
2.85K photos
79 videos
51 files
4.44K links
Все самое полезное для питониста в одном канале.

Список наших каналов: https://t.iss.one/proglibrary/9197

Курс по ML: https://cl

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

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
⚒️ Cement Framework: мощная основа для Python CLI-приложений

Cement — это фреймворк для создания CLI-приложений на Python:
подходит как для простых скриптов, так и для сложных многоуровневых систем.
можно использовать как микро-фреймворк или как основу для масштабных проектов.

Установка:
pip install cement
# или с CLI-расширениями
pip install cement[cli]


Ключевые возможности:
— Система handlers & interfaces для гибкой кастомизации
— Поддержка конфигов из нескольких файлов
— Парсер аргументов + слияние с конфигом
— Поддержка плагинов и расширений
— Логирование (консоль + файлы)
— Кэширование для ускорения
— Zero external deps (кроме опциональных)

⚡️ Cement = быстрый старт + масштабируемость + стабильность.

Подходит и для дата-инженеров, и для Python-разработчиков, которым нужны надёжные CLI-инструменты.

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
🔥 Python Namespace Packages: боль разработчика

В Python есть странный зверь — namespace packages. По идее, они решают проблему разделения одного пакета на несколько директорий. На практике же это сплошная путаница и боль.

Почему так:
🚩 У нас есть два способа делать одно и то же: explicit (через __init__.py + костыли) и implicit (PEP 420, без __init__.py).
🚩 Zen of Python говорит: “There should be one– and preferably only one –obvious way to do it”, но тут явно нарушено.
🚩 Новички легко создают случайные namespace пакеты, просто забыв __init__.py.
🚩 Явные пакеты оказываются несовместимыми между собой, implicit — хрупкие и медленные.

⚡️ Сценарий:
Представьте, вы в условном Gooble и хотите, чтобы все пакеты начинались с gooble.*.

Красиво, пока кто-то не решит, что gooble/__init__.py не нужен. Или наоборот, случайно добавит его. И всё — сломалось.


Вывод (и личный совет):
Всегда кладите __init__.py в каждую директорию.
Избегайте осознанных namespace packages — они слишком ненадёжные.

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
😎 Сколько баллов набрали вы?

Голосуйте, какой у вас уровень разработчика:

😁 — 5-12 баллов (стажер)
👍 — 13-25 баллов (джуниор)
⚡️ — 26-40 баллов (джуниор+)
👏 — 41-60 баллов (миддл)
🔥 — 61-80 баллов (миддл+)
🎉 — 81-100 баллов (сеньор)
🤩 — 100+ баллов (тимлид)

Но вот в чем прикол — опытный разработчик набирает баллы не случайными косяками, а осознанными решениями.

👉 Научим, как быстро прокачаться от стажера до сеньора
🤩9👍41🎉1🌚1
This media is not supported in your browser
VIEW IN TELEGRAM
📱 Pythonу уже 10 лет с async — почему он до сих пор не массовый

В 2015 году в Python 3.5 появились ключевые слова async/await. Казалось, что это станет новой эрой для конкурентного кода в Python. Сегодня — почти Python 3.14, десятилетие спустя. Но асинхронность так и не стала «дефолтом». Почему?

Основные наблюдения:
🔛 Async идеально подходит для веб-разработки: запросы к БД, HTTP-запросы, сетевые операции.
🔛 FastAPI с самого начала строился на async, Django всё ещё «догоняет», а Flask остаётся синхронным (у него есть async-альтернатива — Quart).
🔛 Главный ORM — SQLAlchemy — добавил поддержку asyncio только в 2023 году.

В Python 3.14 нас ждут две революции:
🔛 PEP 779 — Free-Threading (многопоточность без GIL),
🔛 PEP 734 — Multiple Interpreters в стандартной библиотеке.

Вопрос: сделают ли они многопоточность и параллелизм по-настоящему популярными в Python — или через 10 лет мы будем обсуждать те же проблемы?

👉 Подробная статья по теме

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4
📊 Matplotlib шпаргалка для начинающих

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

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍2
🎮 КВЕСТОВАЯ ЛИНИЯ: «Путь Data Scientist'а»

⮕ Твой стартовый набор искателя данных:
Python — твое легендарное оружие (урон по багам +∞)
Математика — твой базовый интеллект (влияет на понимание алгоритмов)
Машинное обучение — твое дерево навыков (открывает новые способности)


⚡️ АКТИВЕН ВРЕМЕННЫЙ БАФФ: «Щедрость наставника»

Эффект: –30% к цене полного набора ДСника
Было: 121.800 ₽ → Стало: 84.900 ₽

☞ Что ждет тебя в этом квесте

— Получение артефактов: портфолио проектов и сертификаты— Прокачка от новичка до Senior Data Scientist— Босс-файты с реальными задачами из индустрии— Доступ к гильдии единомышленников


📎 Забрать бафф
Рассрочки: 3 мес | 6 мес | 12 мес
👍2🌚1
ну это новый уровень 🤣

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

#развлекалово
Please open Telegram to view this post
VIEW IN TELEGRAM
😁44👍2🥰1
📚Напоминаем про наш полный курс «Самоучитель по 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
👍11
📱 Новости и релизы Python‑пакетов за последние 7 дней

📦 Свежие релизы пакетов
pydantic-ai 1.0.0 — фреймворк-обёртка для использования Pydantic вместе с LLM.
lancedb 0.25.0 — embedded-движок для мультимодального поиска.
graphiti-core 0.20.x — библиотека для построения временных графов.
torchao 0.13.0 — инструменты оптимизации GPU-моделей.
dag-factory 1.0.0 — генерация Airflow DAG-ов из YAML.
certbot-dns-cloudflare 5.0.0 — плагин DNS-аутентификации для Certbot.
pyrefly 0.31.0 — быстрый type checker на Rust.
fastexcel 0.15.x — быстрый Excel reader на Rust.
pyexasol 1.0.0 — Python-драйвер для Exasol с расширенными функциями.
trl 0.22.x — обучение трансформеров с подкреплением.
inference-cli 0.54.x — простой деплой CV-моделей с Roboflow.
sparkmeasure 0.26.0 — API для анализа производительности Spark.
tokenizers 0.22.0 — быстрые токенайзеры для продакшна и ресерча.

📚 Полезные статьи и материалы
Что с Python? Меньше производительности, никакого сахара и больше багов
Python и множества: генераторы, которые делают код чище
Почему асинхронный Python не такой популярный?
Самые популярные Python-фреймворки и библиотеки 2025 года
Особенности Python, о которых вас точно спросят на собеседовании
Самый быстрый способ читать Excel в Python
Быстрый Django: всё о производительности
Как НЕ нужно писать автотесты на Python
Обзор UDTF в PySpark

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

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤩1
⚡️ Будь как этот гений с картинки — предлагай свои условия работодателю, а не наоборот!

Кто нужен?

Senior ML-Engineer с опытом работы более 6 месяцев в FAANG компаниях. Требование: разработать кросс-платформенное приложение-трекер зарплат с AI-распознаванием вакансий по резюме.


Но если вы пока джун — я бы предложил:

- Full-time контракт: 180к/мес после курса + опцион на карьеру в топ-компаниях

- Либо фикс за проект: стань ML-инженером за 39к вместо 44к с промокодом LASTCALL

🔗 Старт 9 сентября
👍4🤩1
Иногда реально ощущение, что нас держат в Матрице.

Большинство сидит, читает статьи про ML, смотрит ролики «как это работает» — и всё.

Сегодня последний день промокода Lastcall (−5000 ₽).
Уже завтра стартует первый вебинар по Машинному обучению — полный набор для выхода из Матрицы.

Кто готов вырваться из симуляции и ворваться в сезон найма?

👾 — я уже в команде Нео
👍 — хочу красную таблетку
🤔 — пока думаю, но интересно

👉 Забронируй место сейчас
🌚32
This media is not supported in your browser
VIEW IN TELEGRAM
💾 RecoverPy — интерактивное восстановление данных на Linux

RecoverPy умеет находить не только удалённые, но и перезаписанные данные, сканируя каждый блок диска. Идеально для восстановления кода, конфигов или текстовых файлов.

Особенности:
Восстановление удалённых и перезаписанных файлов
Поиск содержимого файлов по строке, даже в бинарных файлах
Совместимость со всеми файловыми системами Linux
Быстро, использует мощь стандартных утилит Linux (grep, dd, lsblk)

📱 Репозиторий

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92
🐍 Python 3.14+: новый SyntaxWarning про return в finally

В Python 3.14 появился свежий ворнинг, связанный с тем, что в блоках finally нельзя (и не стоит) использовать:
return
break
continue

Пример:
import random

def d6() -> int:
try:
return random.randint(1, 6)
finally:
return 4 # всегда перезапишет результат!


Теперь при запуске:
SyntaxWarning: 'return' in a 'finally' block


❗️ Проблема в том, что return внутри finally переопределяет любое предыдущее значение — то есть в примере выше кубик всегда возвращает 4, даже если генератор случайных чисел сработал корректно.

Решение: вынести return из finally, например:
def d6() -> int:
try:
return random.randint(1, 6)
except Exception:
return 4 # fallback


А ещё лучше — просто:
def d6() -> int:
return random.randint(1, 6)


👉 Идея ворнинга (PEP 765) в том, чтобы спасти разработчиков от коварных багов и неожиданных перезаписей return/break/continue внутри finally.

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍183🤔3
⚡️ Фоновая обработка задач в Python с Celery и RabbitMQ

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

Для этого в Python чаще всего используют Celery и брокер сообщений, например RabbitMQ.

Почему Celery:
➡️ Один из самых популярных task-queue фреймворков в Python.
➡️ Легко интегрируется с Django, Flask и любыми Python-проектами.
➡️ Использует понятные концепции: декораторы для задач, питоновские структуры данных для сообщений.
➡️ Масштабируется до тысяч задач в секунду.

Почему RabbitMQ:
➡️ Проверенный брокер сообщений.
➡️ Поддержка сложной маршрутизации (exchanges, queues).
➡️ Гарантии доставки (ack, persistence).
➡️ Кросс-языковая совместимость (AMQP, MQTT, STOMP).

Пример приложения: сервис Slack-уведомлений о дожде:
🟠OpenWeatherMap API → получаем прогноз.
🟠GitHub API → используем как простую JSON-базу для защиты от дубликатов.
🟠Slack API → отправляем уведомления.
🟠Celery + RabbitMQ → автоматический запуск задачи каждый день в 12:00.

🔗 Полный гайд с кодом: https://clc.to/Bl_Rww

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍2
🐍 Python 3.14: три маленькие, но очень полезные фичи

Все говорят про free-threading, мульти-интерпретаторы и новый REPL в Python 3.14. Но как всегда, в релизе есть и «мелочи», которые могут реально облегчить жизнь.

Вот три из них:

1️⃣ `contextvars.Token` теперь контекстный менеджер

Больше не нужно вручную ресетить ContextVar через токены. Теперь всё лаконично:
from contextvars import ContextVar

A = ContextVar("A")

with A.set("val"):
...


2️⃣ `functools.Placeholder` для `partial`

Теперь можно легко фиксировать позиционные аргументы без костылей:
from functools import partial, Placeholder

def div(a, b, /): ...
div_by_2 = partial(div, Placeholder, 2)

div_by_2(10) # 5


Больше не нужны лямбды или лишние функции.

3️⃣ Поддержка UUID v6, v7 и v8

Особенно интересен UUID v7: он сочетает случайность с возможностью сортировки по времени:
from uuid import uuid7
uuid7() < uuid7() # сортируется хронологически


Это упрощает работу с ключами в БД: и уникальность, и порядок в одном флаконе.

Python 3.14 снова доказывает: полезные фичи бывают не только «громкими», но и тихими, но именно они делают повседневный код проще.

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82