Библиотеки Python — это файлы с шаблонами кода. Их создали для того, чтобы люди не набирали каждый раз заново один и тот же код: достаточно открыть файл, вставить свои данные и получить результат.
Рассказываем, какие библиотеки часто используют разработчики на Python.
Для работы с приложениями
Одна из областей применения Python — разработка веб-приложений и десктопных программ. Библиотеки помогают сделать процесс проще.
Requests. Упрощает генерацию HTTP-запросов к другим сервисам, помогает писать их очень просто и быстро. Код получается лаконичным, а запрос легко настроить и отправить. Библиотека поддерживает множество функций и написана понятным языком.
HTTPX. Расширение для Requests. Оно поддерживает все функции библиотеки, помогает работать с HTTP и асинхронностью. HTTPX помогает отправлять и получать запросы, работать с клиент-серверными протоколами взаимодействия веб-сервера и приложения
Retrying. Автоматизирует повторные вызовы. Если действие в коде, например запрос к внешнему источнику, не выполнилось и вернуло ошибку, с помощью Retrying можно настроить автоматические повторные попытки. Количество попыток и возможные изменения в запросах тоже настраиваются.
Celery. Помогает правильно распределить множество задач в больших проектах, расставить приоритеты и выполнить их в оптимальной последовательности. Часто используется в backend-разработке, например с фреймворком Django.
Dramatiq. По назначению библиотека похожа на Celery, но считается более новой и работает иначе. Она нужна для распределения задач, которые выполняются фоново. Библиотека лишена ряда недостатков Celery и более удобна в использовании.
Flask. Микрофреймворк для создания простейших веб-приложений на Python. Flask помогает быстро создать простой проект и в дальнейшем масштабировать его. Он может интегрироваться с другими инструментами, например для дизайна и визуализации интерфейса.
Для машинного обучения и ИИ
Машинное обучение, анализ данных, искусственный интеллект — это области, в которых Python используется как основной язык. Он применяется в распознавании, предсказании, генерации данных, в том числе в компьютерном зрении, обработке естественного языка и других направлениях. Библиотеки как всегда упрощают работу с задачами. Также они используются для математических расчетов, построения графиков и пр.
NumPy. Предназначена для работы с числами и сложной математикой. В первую очередь она облегчает расчеты с матрицами и многомерными массивами — именно в таком виде мы передаем любые данные на вход алгоритмам и моделям в методах глубокого обучения. Поэтому NumPy входит в базовый стек библиотек для Machine Learning.
SciPy. Основана на NumPy, но имеет более широкий функционал. Она предназначена для глубоких и сложных математических операций и вычислений. В SciPy много функций для научного анализа и работы с высшей математикой.
Matplotlib. Используется для удобного построения графиков и визуализации результатов. Активно применяется в задачах анализа данных, при оценке и сравнении метрик алгоритмов, наблюдениях за моделью. Нередко Matplotlib используется в тандеме с NumPy и SciPy.
Pillow. Предназначена для работы с картинками. Библиотека помогает их обрабатывать, применять различные эффекты, «чистить» от шума, работать с пикселями и делать многое другое. Обработка изображений обычно используется в задачах компьютерного зрения, когда нужно перевести картинку в понятный для компьютера формат.
TensorFlow. Мощная библиотека для глубокого обучения. В основном TensorFlow используется для создания и обучения нейронных сетей. Ее можно представить как «ядро» для математических вычислений на Python. Она представляет данные как тензоры — векторы, которые складываются в графы.
Keras. Упрощает использование TensorFlow. Keras отвечает за создание и настройку моделей и нейросетей, а TensorFlow выполняет в них расчеты.
PyTorch. Еще одна библиотека с открытым исходным кодом от Facebook*, которая используется для глубокого обучения, создания и обучения нейронных сетей. Она более новая, чем TensorFlow и показывает по сравнению с ней лучшие результаты.
Pymorphy2. Это морфологический анализатор русского языка. Он распознает и приводит слова к нормальной форме (например, «люди -> человек», или «гулял -> гулять»), меняет число, род, падеж и пр.
Pymystem3. Библиотека от Яндекса имеет точно такой же функционал, как и Pymorphy2, и является ее альтернативой. Pymystem3 быстро и качественно распознает части речи и лексемы слова.
OpenCV. Это открытая библиотека для работы с алгоритмами компьютерного зрения, машинным обучением и обработкой изображений.
Для логирования, обработки и форматирования данных
И при разработке, и при тестировании специалист должен иметь дело с большим количеством информации. «Сырые» данные нужно приводить к единому виду и очищать от лишних сведений, чтобы не вызывать ошибок и получать более точные результаты. Уже обработанные – заносить в различные системы. А саму работу программы следует логировать, то есть записывать сведения о ее действиях. Логи нужно форматировать, выводить и сохранять в файл. Для всего перечисленного тоже есть свои библиотеки.
Rich. Позволяет форматировать текст, который Python выводит в консоль. Словосочетание Rich Text означает «отформатированный», «украшенный» текст. Можно сделать разноцветными сообщения в консоли, изменить в них начертание шрифта, выводить таблицы, пользоваться эмодзи. Это удобно, если нужны понятные и наглядные логи.
Loguru. Инструмент для удобного и простого логирования данных. В Python есть встроенная библиотека logging, но многие разработчики считают ее неудобной из-за сложных конфигураций логов, неудобства настроек разного уровня логирования и ротации файлов логов. Поэтому они пишут логи через loguru. Библиотека имеет широкие настройки форматирования, удобна в работе и поддерживает множество функций, например архивирование файлов с логами.
Pydantic. Помогает не только обрабатывать данные: она вносит в Python строгую типизацию и четкость в работе. Но обычно ее используют для валидации и парсинга: Pydantic проверяет и приводит данные из других сервисов к единому виду. Разнородные данные сложно воспринимать и программе, и человеку.
Dateparser. Инструмент находит и определяет даты в массиве данных. Он работает с разными форматами записи: и строгими, и «человекопонятными». Dateparser сможет найти дату и формата «25.06.1999», и формата «вчера» или «месяц назад». В основном библиотека используется при парсинге данных.
Для отслеживания и анализа
Во время работы программы разработчику часто необходимо «следить» за ее поведением и вовремя обнаруживать неполадки. Библиотеки ниже помогают решить эту задачу.
Py-spy. Следит за тем, что и как выполняет программа, сколько времени и ресурсов она тратит на разные задачи, мониторит ее работу. Py-spy сначала обращается к системе компьютера, а затем сохраняет и выводит полученную информацию, которую можно использовать в работе. Вам не нужно перезагружать или модифицировать работающую программу: инструмент помогает получать информацию, не затрагивая исходный код. Библиотека удобна при поиске багов, особенно если нельзя переписать код.
Pympler. Мониторит и анализирует память, которая используется при исполнении кода программ на Python. Инструмент находит ее избыточное потребление, утечки и другие баги. С помощью Pympler можно узнать все о размере и длительности процессов приложения на Python за время работы.
Для тестирования
Для проверки работоспособности программ обычно устраивают тестирование. Это отдельное направление в IT. Для кода на Python также пишут тесты, генерируют для них данные, меняют настройки среды и многое другое. Для упрощения таких задач тоже существуют специальные библиотеки.
Responses. Выше мы говорили про requests — это ее противоположность. Responses помогает генерировать различные ответы на запросы и затем анализировать их результаты. В отличие от requests, responses используется в основном при тестировании — помогает проверять, как приложение реагирует на разные ответы внешнего сервиса.
Freezegun. Библиотека поможет, если нужно протестировать работу программы в конкретный период. Она «замораживает» параметры даты и времени на определенной точке, нужной программисту. Это может быть полезно, например, если тестируемая программа должна работать по-разному в зависимости от времени суток или дня недели.
Faker. Для тестирования функциональности приложения часто нужно заполнять его данными, например о пользователях. Использовать реальные персональные данные в такой ситуации некорректно и небезопасно. Поэтому лучше воспользоваться Faker — библиотекой, которая помогает сгенерировать большое количество ненастоящей информации. Это могут быть ФИО, телефоны, даты рождения, данные карточек и многое другое.
Factory_boy. Еще один инструмент для генерирования данных. В отличие от Faker, он генерирует фикстуры — блоки кода, которые выполняются до или после тестовых функций. Фикстуры помогают привести приложение в нужное состояние, задать исходные данные или сгенерировать информацию для теста. Эта библиотека упрощает их создание и применяется в основном в unit-тестировании.
Для других задач
У Python много и других вариантов применения: написание скриптов, автоматизация рутинных задач в разработке и так далее. Вот несколько полезных библиотек, которые могут серьезно улучшить жизнь разработчику.
Funcy. Это набор утилит для практического применения, набор конструкций, которые упрощают код. Он облегчает написание программ и работу с простыми, но однообразными действиями. Например, Funcy упрощает повседневные задачи разработчика, например помогает быстро просмотреть структуру данных или модифицировать функцию.
Tqdm. Библиотека, полезная для написания скриптов. Она генерирует прогресс-бары, которые показывают продвижение по коду и оставшееся время его выполнения. Программа, которая долго работает, — «черный ящик» для разработчика: он не знает, зависла она или нет, на каком этапе выполнения сейчас находится. Tqdm помогает легко и быстро отслеживать ее состояние и получать больше информации. Информация о выполнении программы будет выводиться в консоль в удобном для разработчика виде.
Black. В разработке есть понятие — код-стайл, или code style. Это набор соглашений о том, как правильно оформлять код. Разработчики должны придерживаться код-стайла, чтобы легче понимать код друг друга. Соглашение об оформлении кода на Python называется PEP8. Писать рекомендуется в соответствии с ним, но проверять оформление вручную может быть долго и неудобно, а библиотека black проводит такие проверки автоматически. Это автоформатер: он исправляет нарушения код-стайла и делает код более чистым.
*Принадлежит компании Meta, которая признана экстремистской на территории РФ.