Advertisement
Поиск  
Always will be ready notify the world about expectations as easy as possible: job change page
24 марта

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

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

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

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

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

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


Модуль (Module)

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

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

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

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

def welcome_message(course):
    print("Спасибо, что выбрали курс «" + course + "». Скоро вы получите письмо с расписанием.")

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

import welcome
welcome.welcome_message("Основы Data Science")

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

Спасибо, что выбрали курс «Основы Data Science». Скоро вы получите письмо с расписанием.

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

from welcome import welcome_message

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

Пакет (Package)

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

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

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

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

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

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

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

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

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

pip list

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

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

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

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

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

pip install pytorch

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

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

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

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

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

Заключение

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

Похожее
May 12, 2023
Author: Love Sharma
Developing a robust, scalable, and efficient system can be daunting. However, understanding the key concepts and components can make the process more manageable. In this blog post, we’ll explore essential system design components such as DNS, load balancing, API Gateway,...
Feb 15
Author: John Dhinakar Challa
Scenario: You are the web administrator for User Illusions, a virtual reality gaming company based in Hollywood, CA. You must ensure that your company website is up and running at all times. If an outage is detected, you must be...
Feb 10, 2023
Author: Abdelmajid BACO
A Quick Guide to Transient, Scoped, and Singleton in C#.In C#, the Transient, Scoped, and Singleton scopes are options for controlling the lifetime of objects which are created by dependency injection.TransientTransient objects are created each time they are requested. This...
Mar 22
Author: Dayanand Thombare
IntroductionDelegates are a fundamental concept in C# that allow you to treat methods as objects. They provide a way to define a type that represents a reference to a method, enabling you to encapsulate and pass around methods as parameters,...
Написать сообщение
Почта
Имя
*Сообщение


© 1999–2024 WebDynamics
1980–... Sergey Drozdov
Area of interests: .NET Framework | .NET Core | C# | ASP.NET | Windows Forms | WPF | HTML5 | CSS3 | jQuery | AJAX | Angular | React | MS SQL Server | Transact-SQL | ADO.NET | Entity Framework | IIS | OOP | OOA | OOD | WCF | WPF | MSMQ | MVC | MVP | MVVM | Design Patterns | Enterprise Architecture | Scrum | Kanban