Модуль, пакет, библиотека, фреймворк: разбираемся в разнице

Posted by

Реальные программы сложны и даже элементарный симулятор игральных костей требует большого количества кода. Чтобы упростить процесс, разработчики используют модульное программирование — разбивают задачи на более мелкие и более управляемые. Поэтому в ЯП так много модулей, пакетов, библиотек и фреймворков.

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

!

Модуль (Module)

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

Достоинства модулей в том, что они:

— помогают сосредоточиться на одной небольшой части задаче;.
— сводят на нет дублирование за счет переиспользования;
— минимизируют вероятность конфликта имен.

Давайте разберем их на примере. Создадим функцию приветствия:

Сохранив ее в welcome.py, мы создадим модуль. Если welcome_message() понадобился, его импортируем директивой:

Сообщение будет выглядеть так:

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

Если у вас есть опыт работы с Python, то вы наверняка использовали модули re, datetime и проч.

Пакет (Package)

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

Это каталоги модулей с иерархической структурой пространства имен. Точно так же, как мы раскладываем файлы на жестком диске по папкам и субдиректориям, можно организовать модули в пакеты и «подпакеты» (subpackages).

Пакет должен содержать файл с именем __init__.py, который и позволяет использовать каталог.

!

Пакет Writing (писательство) и его модули Books (книги) и Article (статьи)

В мире пакетов для Python есть немало «звезд», о которых вы наверняка слышали:

— numpy — для научных вычислений;
— pandas — для обработки табличных данных;
— pytest — для тестирования.

Если классическое веб-приложение активно использует всевозможные компоненты, то в Data Science скачок на пакеты происходит на первых же уроках, и модули проходят вскользь.

В Python установленные пакеты можно посмотреть командой:

Библиотека (Library)

Это объект еще выше уровнем: он содержит связанные модули и/или пакеты. Часто «библиотеки» и «пакеты» выступают синонимами, потому что и те, и другие содержат модули и «подпакеты» (subpackages).

На мой взгляд, разница между ними весьма условная. Это становится очевидно, когда сравниваешь списки звезд из текущего и предыдущего разделов:

— Matplotlib — для визуализации данных;
— PyTorch — для глубокого обучения;
— BeautifulSoup4 — для парсинга.

Установка библиотек Python также производится командой pip:

Фреймворк (Framework)

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

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

Известные представители класса – это:

— Django — фреймворк Python для сайта;
— Flask для легковесных демо-проектов;
— Bottle для создания API.

Заключение

Теперь вы знаете, в чем отличия модуля от библиотеки и от фреймворка. Более того, на старте новичку стоит понимать лишь отличие модуля от пакета и библиотек. А фреймворки придут в код позже, бесшовно и не спутают карты.

Какие у вас любимые модули, пакеты библиотеки, фреймворки? Поделитесь в комментариях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *