Вас никогда не обескураживало огромное число модулей Python? И, скорее всего, вам было непросто выбрать всего один для конкретного проекта. В этой статье вы узнаете о модулях, которые, на мой взгляд, должны быть в арсенале каждого разработчика Python. При этом для большей ясности они будут распределены по 4 категориям. 

Веб-разработка 

К первой категории относятся модули, связанные с веб-разработкой HTTP-запросов. Python широко применяется для бэкенда, поэтому несложно догадаться, что он предоставляет множество разных инструментов для создания корпоративных веб-сайтов. 

Запросы

Встроенные модули urllib и urllib2 подходят для обработки HTTP-процессов. Каждый из них включает разный набор функциональностей, и в большинстве случаев их необходимо задействовать совместно. Основной недостаток, сбивающий с толку, состоит в том, что ряд методов urllib также доступен и в urllib2. Суть другого недостатка —  не совсем понятная документация, вследствие чего приходится писать много кода для создания самого простого HTTP-запроса. Во избежание этих сложностей большинство разработчиков предпочитают для запроса привлекать сторонний модуль. Речь идет об HTTP-библиотеке под лицензией Apache2, основанной на urllib3 и httplib.

Django

Несмотря на то, что Django больше относится к высокоуровневым веб-фреймворкам Python, чем к модулям, настоятельно рекомендую его загрузить и установить. Он избавит вас от стресса, связанного со сборкой веб-приложений с нуля. В число его сильных сторон входят: быстрая разработка, продуманный дизайн, скорость и хорошая масштабируемость. Можно сочетать Django с другими языками и фреймворками. Он предоставляет множество инструментов и сложные функциональности для разработчиков, позволяющие создавать качественные корпоративные сайты. 

Flask

Еще одним веб-фреймворком, обычно конкурирующим с Django, является Flask. Выбор одного из них всецело зависит от создаваемого проекта. Flask намного легче и быстрее установить, но он включает меньший набор инструментов, чем Django. Последний лучше всего подходит для приложений с тяжёлыми функциями, например аутентификацией, тогда как Flask предпочтителен для простых базовых веб-приложений. 

BeautifulSoup

BeautifulSoup  —  великолепный модуль для сбора данных с различных интернет-ресурсов. Если вы занимаетесь парсингом веб-страниц, то в его лице вы обретете незаменимого помощника. Он предоставляет несколько простых методов и идиомы Python для навигации, поиска и изменения дерева разбора. BeautifulSoup также преобразует входящие документы в Unicode, а исходящие  —  в UTF-8. О кодировке придется задумываться лишь в случаях, когда она не будет указана в документации и модуль не сможет ее обнаружить. В такой ситуации вам придется задать ее исходный вариант. BeautifulSoup парсит все, что вы ему предоставляете, и совершает за вас полный обход дерева.

Selenium

Selenium  —  это инструмент для выполнения автоматизированных задач. Он позволяет либо тестировать веб-сайты, либо создавать бота, взаимодействующего с ними. С Selenium у вас есть возможность, например, обращаться к HTTP-полям, передвигать курсор мыши, задействовать клавиши и т. д. У меня был опыт его применения при разработке виртуального ассистента, осуществляющего поиск нужной информации. Он мог подключаться к строке поиска, вводить поисковый термин, просматривать полученные результаты и выбирать нужный для перехода. При правильном применении Selenium раскроет вам всю свою мощь. 

Наука о данных 

Python чрезвычайно востребован в области науки о данных и предоставляет много разных модулей, упрощающих работу с ними. 

NumPy

NumPy  —  превосходный модуль для выполнения математических операций в Python. Он позволяет работать с многомерными массивоподобными объектами и мгновенно выполнять все виды сложных 3-х, 4-х, 5-мерных математических вычислений. Высокая скорость Numpy объясняется тем, что большинство его операций реализованы на С. Вы можете реализовать их и на стандартном Python, но с этим модулем ваша программа станет гораздо быстрее. 

Pandas

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

Matplotlib

Matplotlib применяется для визуализации данных, например создания графиков и диаграмм, а также для работы с моделями МО. Насколько мне известно, причины большинства негативных отзывов об этой библиотеке в основном связаны с тем, что новички блуждают в двух ее интерфейсах. Первый из них основан на MATLAB и является процедурным, а второй  —  объектно-ориентированным. Долго объяснять, почему возникла потребность в двух интерфейсах, так что оставим этот вопрос за рамками статьи. Важно понять, что существуют два подхода для построения графиков в Matplotlib.

NLTK

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

OpenCV

Представляю вам мощный модуль OpenCV для самых разных целей. Главным образом он ориентирован на обработку изображений и видеоданных, позволяя выполнять такие действия, как обнаружение/описание признака и распознавание объектов. Он располагает встроенными инструментами МО для управления данными и работы с изображениями. 

Машинное обучение и искусственный интеллект 

Эта область заслуживает пристального внимания, особенно в связи с развитием технологий. Почти везде в наше время присутствует код МО: в беспилотных автомобилях, распознавании изображений, персонализированном поиске и т. д. 

TensorFlow

TensorFlow бесспорно является самым мощным модулем в этом разделе. С помощью данной библиотеки вы можете делать невероятные вещи и при этом особо не вдаваться в суть выполняющихся математических вычислений, но это совсем не повод забросить математику. Преимущество TensorFlow заключается в том, что она позволяет создавать нейронные сети и выполнять стандартные алгоритмы МО. Трудно переоценить огромное значение этого модуля для тех, кто занимается МО. 

Keras

Библиотека Keras  —  это высокоуровневый API для TensorFlow. Она больше подходит для тех, кто только начинает работу в данной области. Keras упрощает доступ к ряду возможностей TensorFlow. Можно сказать, что она представляет собой надстройку над ней, предлагая более простые способы создания моделей и ускоряя выполнение действий. 

Pytorch

Хотя у меня самого небольшой опыт работы с Pytorch, я не мог не включить его в этот раздел. В Python он является одним из наиболее значительных фреймворков для МО и ИИ. Pytorch обладает двумя главными особенностями. Во-первых, императивное программирование в противоположность символическому. Императивная программа выполняет вычисления по мере того, как вы их вводите. Благодаря этому свойству программа становится более гибкой. Во-вторых, задействуется динамический вычислительный граф в противоположность статическому. Это означает, что во время выполнения система порождает структуру графа, более подходящую для динамических нейронных сетей.

Scikit-learn

Scikit-learn не обладает такими мощными возможностями, как предыдущие библиотеки и фреймворки. Она более легковесная и позволяет работать с такими алгоритмами, как кластеризация, линейная прогрессия, метод опорных векторов и т. д. Все это можно сделать и в TensorFlow, однако весьма нецелесообразно задействовать массивную библиотеку для выполнения задач, с которыми справится более легкая Scikit-learn.

Графические пользовательские интерфейсы в Python 

Kivy

Kivy  —  это отличный фреймворк для создания приложений с возможностью запуска на всевозможных платформах. Любое создаваемое вами приложение Kivy будет работать на Linux, Mac, Windows, iOS и Android.

PyQt5

По моему мнению, PyQt5 является лучшим инструментом для создания GUI на Python. С ним вы получаете максимальный спектр возможностей и гибкость. В вашем распоряжении даже стиль CSS для оформления визуального облика приложения. Например, с помощью PyQt5 была создана Spider IDE. Если вы намерены создавать более сложные приложения для настольного компьютера, то лучшего варианта и не придумаешь.  

Tkinter

Tkinter  —  это библиотека “со стажем”, также применяемая для создания GUI. Она очень похожа на PyQt5 с точки зрения внешнего вида интерфейса, но обладает меньшими возможностями. На мой взгляд, ее легче освоить новичкам и тем, кто хочет получить быстрый результат без заморочек. 

Заключение 

Итак, в 4-х рассмотренных нами категориях были представлены модули, которые должен знать каждый разработчик Python. Этот язык программирования предоставляет удивительные возможности, однако необязательно использовать все из них. В зависимости от решаемых задач какие-то подойдут лучше других. Вы никогда не ошибетесь, если будете выбирать инструмент согласно своим целям. 

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен


Перевод статьи Samuel Martins: Most Useful Modules Every Python Developer Should Know

Предыдущая статьяИзучите webpack менее чем за 10 минут
Следующая статьяКак создать интересный онбординг и привлечь пользователей с первого взгляда