Библиотека питониста | Python, Django, Flask
40.5K subscribers
2.78K photos
75 videos
51 files
4.36K links
Все самое полезное для питониста в одном канале.

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

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

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

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
🔥 Хороший ML-разработчик не начинает с нейросетей

На собеседовании по ML System Design кандидату дают задачу «предсказать отток», а он сразу лезет в нейросети. Красиво, модно, дорого.

Но профи думает иначе:

💭 Логрегрессия? Градиентный бустинг?
💭 А сколько у нас данных и времени?
💭 Что с интерпретируемостью?

Потому что не выбрать адекватную модель — это уже ошибка.

Нейросети — это круто. Но без понимания классического ML вы просто «подключаете модельку», а не строите решения.

➡️ На курсе разберём:

— линейные модели, деревья, PCA, кластеризацию
— метрики, переобучение, bias vs variance
— инженерные подводные камни, которые идут сразу после fit()

🎁 Скидка 10 000₽ по промокоду Earlybird, только до 27 июля.

А ещё — подарок для первых 10 участников: специальный лонгрид по теме курса, чтобы вы могли начать погружение в материал уже сегодня.

🔗 Успей записаться — и начни карьеру в Data Science уже через 3 месяца!
2
🎞 Что посмотреть: практические советы для локальной разработки на Python с uv

В новом видео показывают, как выстроить бысткие и предсказуемые локальные Python-процессы с помощью uv — современного инструмента для управления зависимостями.

Разбираются конкретные техники, которые делают работу над проектами стабильнее и удобнее:
— управление зависимостями без лишней магии
— автоматизация повседневных задач
— упрощение локальной разработки в команде

Также показывают, как uv можно сочетать с:
📌 Just — таск-раннер
📌 Overmind — управление множеством процессов
📌 Direnv — автозагрузка переменных окружения

Подход делает локальную разработку не только быстрее, но и скучнее в хорошем смысле — без сюрпризов, хаоса и «а у меня не работает».

🔗 Ссылка на видео: https://clc.to/2mdH7g

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥53
📦 Распаковка * и ** прямо в генераторах

Это предложение в Python (PEP 798), которое добавляет возможность использовать распаковку (* и **) прямо в списковых, множественных и словарных генераторах и выражениях.

➡️ Часто нужно объединить много списков, множеств или словарей в один — сейчас для этого приходится писать вложенные циклы или использовать сложные конструкции. Новый синтаксис делает это проще и понятнее.

Допустим, есть список списков:
its = [[1, 2], [3, 4], [5]]


Как сейчас объединить их в один список:
flattened = [x for it in its for x in it]


С новым синтаксисом можно просто написать:
flattened = [*it for it in its]


Это автоматически распакует все элементы из вложенных списков в один.

То же самое работает для множеств и словарей:
sets = [{1, 2}, {2, 3}]
combined_set = {*s for s in sets} # объединение всех множеств

dicts = [{'a': 1}, {'b': 2}]
combined_dict = {**d for d in dicts} # объединение словарей


И для генераторов тоже:
gen = (*it for it in its)


👇 А как вы обычно объединяете несколько списков или словарей?

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥86
🌸 Команда дня: научите свои объекты быть честными

В Python поведение объектов в if-ах — это не магия, а продуманный дизайн.

➡️ По умолчанию любой объект считается «истинным», если вы не скажете иначе.

Когда вы пишете:
if obj:
...


Интерпретатор Python делает следующее:
1️⃣ Вызывается some_object.__bool__(), если метод определён.
2️⃣ Если bool не определён — вызывается some_object.__len__().
➡️ Если длина равна 0 — объект считается False.
➡️ Иначе — True.
3️⃣ Если не определён ни __bool__(), ни __len__() — объект считается True по умолчанию.

Хотите, чтобы объект вёл себя как True или False — определите метод __bool__() или хотя бы __len__():
class Scroll:
def __init__(self, text):
self.text = text

def __bool__(self):
return bool(self.text.strip())


Теперь:
bool(Scroll("Мир"))      # True  
bool(Scroll(" ")) # False


А если это контейнер — можно просто __len__():
class WisdomBasket:
def __init__(self):
self.sayings = []

def __len__(self):
return len(self.sayings)


➡️ Зачем это всё

Потому что if obj: — это не просто проверка, а сообщение:
«Если объект значим…»

И вы решаете, что значит «значим».

Например, что вы хотите сказать, когда пишете:
if response:


Означает ли это:
— что запрос прошёл успешно?
— что в теле ответа есть данные?
— что статус 200?

Это решаете вы, определяя bool.

Но не переусердствуйте: если логика неочевидна, лучше писать явно:
if config.is_valid():


чем
if config:  # что это значит?


Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11👏32
😤 Устал листать туториалы, которые не складываются в картину

У тебя в голове уже есть логрегрессии, деревья, метрики и какая-то PCA, но системного понимания всё нет?

Пора с этим разобраться!

Наш курс по классическому ML:

— научит выбирать адекватные модели под задачу
— разложит метрики, переобучение и bias по полочкам
— покажет, что скрывается за fit/predict, и что с этим делать

🔔 До 27 июля по промокоду Earlybird минус 10.000₽

P.S. Первые 10 участников получат эксклюзивный лонгрид, чтобы начать изучать тему ещё до старта курса.

👉 Поменяй свою жизнь: старт карьеры в AI — успей до закрытия набора!
🥱3😁1🤔1
🎸 Python + Pedalboard: как обрабатывать аудио в несколько строк кода

Если вы думали, что для работы с аудио нужны DAW и плагины — у нас для вас новости. На PyCon US 2025 инженер Spotify Питер Собот показал, как с помощью библиотеки pedalboard можно:
читать аудиофайлы любых форматов
применять эффекты: реверб, эхо, дисторшн
управлять каналами и сэмплами через NumPy
обрабатывать потоки аудио в реальном времени
подключать сторонние VST-плагины

Пример: добавить эффект эха в один канал — всего пару строк кода:
mono = audio[0]  # one channel
delay_seconds = 0.2 # 1/5 of a second
delay_samples = int(f.samplerate * delay_seconds)
volume = 0.75 # 75% of original volume
for i in range(len(mono) - delay_samples):
mono[i + delay_samples] += mono[i] * volume


⚠️ Важное правило: аудио нужно обрабатывать потоково. Даже файл размером в 3 МБ может занять 14 ГБ в памяти — и положить ваш скрипт.

Кроме эффектов, библиотека умеет:
— ресемплить на лету
— стримить звук с микрофона или на колонки
— изменять длительность аудио
— перекодировать в MP3 / FLAC / OGG

Весь доклад можно посмотреть на YouTube: https://clc.to/iuu9wA
Библиотека — open-source, от Spotify: https://clc.to/It-UlQ
Блог-пост: https://clc.to/OUluHg

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍2😍1
🔥 Холивар: обратная связь после собеса — обязательна или «идите лесом»

В последнее время всё чаще появляются кандидаты, которые требуют расширенную обратную связь после интервью. Кто-то даже предъявляет претензии в ответ на отказ — «я же дошёл до финала, где мой оффер?!» Один умудрился пригрозить судом, аргументируя это тем, что раз прошёл два тура, значит имел право на трудоустройство. Эйчары в шоке.

🈁 Одни говорят: «Мы потратили своё время — вы обязаны объяснить, почему отказали!»

🈁 Другие: «Это не университет, чтобы каждому ставить рецензию. Не подошёл — до свидания.»

🈁 А третьи: «Если нет фидбэка — вы токсичная компания, и точка.»

Голос народа: вам вообще нужна обратная связь после собеса:
❤️ — Да, и желательно максимально подробная
👍 — Краткая: причины отказа, без воды
🔥 — Нет, это лишнее и бесполезно
😆 — Не нужна, но хоть будьте вежливы

👇 Пишите в комментарии — интересно, кто на чьей стороне.

Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7926😁5🔥4
🤔 «Начни сразу с нейросетей — зачем тебе логрегрессия?»

Это один из худших советов для начинающего ML-разработчика. Зрелость — это понимать, где простого достаточно, а не тянуть трансформеры на любую задачу из-за хайпа.

Классика ML — это не допотопная теория, а база (bias/variance, деревья, метрики), без которой не понять Deep Learning.

⚡️ Хотите освоить этот фундамент на реальных задачах? Приходите на наш курс по классическому ML. Только хардкор, только продовые задачи!

📆 Старт — 12 августа.

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

🎁 Последний день промокода Earlybird на скидку 10.000₽.

👉 Не упустите шанс!
🥱32
📚Напоминаем про наш полный курс «Самоучитель по 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
🔥14🤩4👍2
📘 Вышел Python 3.14.0 Release Candidate 1

Это первый релиз-кандидат Python 3.14 — значит, API уже стабильно, а до финального релиза будут приниматься только чёткие багфиксы.

➡️ Следующий и последний кандидат запланирован на 26 августа, а официальный релиз — на 7 октября 2025.

Главное из нового релиза:
— PEP 779: официальная поддержка free-threaded Python
— PEP 649: отложенная оценка аннотаций типов
— PEP 750: template-строки — как f-строки, но кастомные
— PEP 734: несколько интерпретаторов в стандартной библиотеке
— PEP 784: поддержка Zstandard (модуль compression.zstd)
— PEP 765: запрет return, break, continue вне finally
— Улучшенная C API конфигурация (PEP 741)
— Экспериментальный интерпретатор с заметным ускорением
— Новый CLI-инструмент для асинхронной инспекции Python-процессов

🔗 Подробнее

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1242❤‍🔥1
📱 Свежие релизы Python‑пакетов за последние 7 дней

Textual 5.0.0 — мощный фреймворк для создания TUI-интерфейсов (современные терминальные GUI).
huggingface\_hub 0.34.0 — обновлённый клиент для загрузки/публикации моделей, датасетов и скриптов на huggingface.co.
vLLM 0.10.0 — высокопроизводительный движок инференса для LLM с оптимизированным потреблением памяти.
line_profiler 5.0.0 — построчный профилировщик Python-кода, полезен при оптимизации.
CrewAI 0.150.0 — координация нескольких AI-агентов, работающих в команде над задачами.
JAX 0.7.0 — дифференцируемый и компилируемый NumPy, мощный инструмент для научных вычислений.
Kedro 1.0.0 — первая стабильная версия фреймворка для создания аналитических пайплайнов.
Logfire 4.0.0 — продвинутый инструмент для логирования и наблюдаемости.
Feast 0.51.0 — SDK для фича-сторов в ML-пайплайнах.
timezonefinder 7.0.0 — оффлайн-определение часового пояса по координатам.
GeoAlchemy2 0.18.0 — работа с пространственными БД через SQLAlchemy.

🔥 Опыт других
Решил перейти на Python — история миграции с другого языка и чем Python оказался удобен.
Современный GUI для yt-dlp на Python — как сделать кроссплатформенное приложение на Python и не страдать.
Резервное копирование на Python — сценарии, пайпы и немного хардкора.
Фундаментальные шаблоны проектирования на Python — чит-карта по важнейшим паттернам.

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2🔥1
🐍 Remote Debugging в Python 3.14

С Python 3.14 вы можете подключиться к работающему Python-процессу с помощью команды:
python -m pdb -p <pid>


Да, теперь pdb поддерживает удалённую отладку без необходимости заранее вставлять pdb.set_trace() в код. Это стало возможно благодаря новой функции sys.remote_exec() — она позволяет выполнить произвольный Python-скрипт в другом процессе по его PID.

Пример:
1. У вас работает программа hello.py, которая принимает числа и считает сумму.
2. В другом терминале вы запускаете:
import sys
sys.remote_exec(95700, "remote-script.py")


Скрипт remote-script.py может, например, вывести stack trace:
print("Hello from remote script")
from traceback import print_stack
print_stack()


Важно:
— Скрипт исполняется в контексте текущего потока в целевом процессе (не параллельно).
— Запуск произойдёт при следующем «возврате» в Python-интерпретатор (например, после input() или окончания sleep()).
— Это не блокирует процесс (в отличие от pdb -p pid, который приостанавливает выполнение).

Потенциальные применения:
— Инспекция состояния и переменных на лету.
— Безопасный дамп состояния в проде (если действовать аккуратно).
— Запуск remote_pdb.set_trace() для интерактивной отладки по сети.

Библиотека питониста #свежак
👍134🔥21
💼 Топ-вакансий для питонистов за неделю

Senior Python Developer —‍ 220 000 ₽, удалёнка

Senior Backend Developer (Python) —‍ от 250 000 ₽, удалёнка

Backend Tech Lead —‍ от 400 000 ₽, удалёнка

Python Developer —‍ от 220 000 ₽, удалёнка

Python-разработчик (IDP) —‍ от 250 000 до 450 000 ₽, гибрид

➡️ Еще больше топовых вакансий — в нашем канале Python jobs

Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
😁93🤩1
🖥 Зачем запускать coverage на тестах

Если вы всё ещё не проверяете покрытие тестами — самое время начать. Вот пара свежих примеров, почему это важно.

Пример 1: два одинаковых теста — но один не выполняется:
def test_get_install_to_run_with_platform(patched_installs):
i = installs.get_install_to_run("<none>", None, "1.0-32")
assert i["id"] == "PythonCore-1.0-32"
...

def test_get_install_to_run_with_platform(patched_installs): # дублирующее имя
i = installs.get_install_to_run("<none>", None, "1.0-32", windowed=True)
assert i["id"] == "PythonCore-1.0-32"
...


Копировали тест и забыли переименовать? Первый просто не запускается — и вы даже не заметите без отчёта по покрытию. В отчёте будет видно: тест написан, но не выполнялся.
✔️ Переименовали — и всё стало работать.
👉 Без coverage — баги в тестах могут так и остаться незамеченными.

💡 Подсказка: это также ловит ruff F811 и легко решается через @pytest.mark.parametrize.

Пример 2: генератор в тесте, который не сработал:
im = Image.new("RGB", (1, 1))
for colors in (("#f00",), ("#f00", "#0f0")):
append_images = (Image.new("RGB", (1, 1), color) for color in colors)
im_reloaded = roundtrip(im, save_all=True, append_images=append_images)

assert_image_equal(im, im_reloaded)
assert isinstance(im_reloaded, MpoImagePlugin.MpoImageFile)
assert im_reloaded.mpinfo is not None
assert im_reloaded.mpinfo[45056] == b"0100"

for im_expected in append_images:
im_reloaded.seek(im_reloaded.tell() + 1)
assert_image_similar(im_reloaded, im_expected, 1)


Генератор был уже использован внутри roundtrip(), и цикл не выполняется — тест пропускается.
👉 Без coverage — даже не заметите.
✔️ Решение — заменить генератор на list(...).

🟣 Короткий итог: даже если тесты «проходят», это не значит, что они выполняются или действительно что-то тестируют.
🟣 Покрытие — простой способ избежать ложного чувства безопасности.
🟣 Попробуйте coverage run -m pytest && coverage report.

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84🔥4
Последний шанс залутать курсы Proglib Academy с выгодой 40% и пожизненным доступом.

До 1 августа действует скидка на курсы по математике для Data Science, алгоритмам и структурам данных, обновлённому Python, frontend-разработке с нуля, основам IT для непрограммистов, базовым моделям ML, а также архитектурам и шаблонам проектирования.

Выбираем и забираем 👈

P.S. Акция не распространяется на курсы «AI-агенты для DS-специалистов» и «ML для старта в Data Science».
😁2👍1
📦 Delivery Manager: кто это и зачем нужен в разработке

В каждой уважающей себя IT-компании есть эта роль — Delivery Manager. Но многие до конца не понимают, чем он занимается: менеджер? Техлид? Или настоящий волшебник?

Давайте разберёмся, кто такие деливери-менеджеры и почему без них современная разработка быстро превращается в хаос.

👉 Хотите узнать больше? Читайте нашу статью: https://proglib.io/sh/9qwbeKQ0dV
😁6🔥3👍2