У меня есть опыт работы с Java, и я новичок в Python. Прежде чем продолжить, я хочу убедиться, что правильно понимаю терминологию Python.
Я понимаю модуль : сценарий, который может быть импортирован многими сценариями для облегчения чтения. Как и в java, у вас есть класс, и этот класс может быть импортирован многими другими классами.
Я понимаю библиотеку : библиотека содержит множество модулей, которые разделены ее использованием.
Мой вопрос: являются ли библиотеки подобными пакетам, если у вас есть пакет, например food
, вызывается , а затем:
- chocolate.py
- sweets.py
- biscuts.py
содержатся в food
упаковке?
Или библиотеки используют пакеты, поэтому, если бы у нас был другой пакет drink
:
- milk.py
- сок.py
содержится в упаковке. library
Содержит два пакета?
Кроме того, интерфейс прикладного программирования (API) обычно содержит набор библиотек, который находится наверху иерархии:
- API
- Библиотека
- Пакет
- Модуль
- Сценарий
Значит, API будет состоять всего из 2-5?
Ответы:
Из Учебника Python - Модули
Модуль :
Пакет :
Если вы читаете документацию к
import
заявлению, вы можете получить более подробную информацию, например:Следовательно, термин
module
относится к определенной сущности: это класс, экземпляры которого являютсяmodule
объектами, которые вы используете в программах на Python. Он также используется по аналогии для обозначения файла в файловой системе, из которого эти экземпляры «созданы».Термин сценарий используется для обозначения модуля, цель которого должна быть выполнена. Он имеет то же значение, что и «программа» или «приложение», но обычно используется для описания простых и небольших программ (т. Е. Одного файла, содержащего не более нескольких сотен строк). Написание сценария занимает минуты или несколько часов.
Термин библиотека - это просто общий термин для связки кода, который был разработан с целью использования многими приложениями. Он предоставляет некоторые общие функции, которые могут использоваться конкретными приложениями.
Когда модуль / пакет / что-то еще «публикуется», люди часто называют его библиотекой. Часто библиотеки содержат пакет или несколько связанных пакетов, но это может быть даже один модуль.
Библиотеки обычно не предоставляют каких-либо конкретных функций, то есть вы не можете «запустить библиотеку».
API может иметь разное значение в зависимости от контекста. Например:
Python/C API
)В любом случае API - это не код Python. Это описание может быть более или менее формальным.
источник
Только пакет и модуль имеют четко определенное значение, характерное для Python.
API не коллекция кода в себе - это больше похоже на «протокол» спецификации , как различные части (обычно библиотеки) взаимодействуют друг с другом. В python есть несколько примечательных «стандартных» API. Например, API БД
На мой взгляд, библиотека - это все, что не является приложением - в Python библиотека - это модуль - обычно с подмодулями . Объем библиотеки довольно изменчиво - например, питон стандартная библиотека огромна (с довольно несколькими подмодулями) , а есть множество библиотек одноцелевых в PyPi, например, Backport из
collections.OrderedDict
за р <2,7Пакет представляет собой набор модулей питона под общим пространством имен. На практике один из них создается путем помещения нескольких модулей Python в каталог со специальным
__init__.py
модулем (файлом).Модуль представляет собой один файл питона кода , который предназначен для быть импортированы . Это небольшое упрощение, поскольку на практике довольно много модулей обнаруживают, когда они запускаются как скрипт, и в этом случае делают что-то особенное.
Сценарий представляет собой один файл питон кода , который предназначен быть выполнен как «основной» программа.
Если у вас есть набор кода, охватывающий несколько файлов, у вас, вероятно, есть приложение вместо скрипта.
источник
Библиотека: это набор модулей.
(Библиотека содержит либо встроенные модули (написанные на C) + модули, написанные на python).
Модуль: каждый из набора стандартизованных частей или независимых единиц, которые можно использовать для создания более сложной структуры.
Говоря неформальным языком, модуль - это набор строк кода, которые используются для определенной цели и могут использоваться в других программах как есть, чтобы избежать DRY ( D on't R epeat Y ourself) в качестве команды и сосредоточиться на главное требование. источник
API - это интерфейс, позволяющий другим приложениям взаимодействовать с вашей библиотекой без прямого доступа.
Пакет - это в основном каталог с файлами.
Скрипт означает серию команд в одном файле.
источник
Я постараюсь ответить на этот вопрос, не используя термины, которые использовали бы самые первые новички, и объясню, почему или как они использовали по-другому, наряду с наиболее «официальным» и / или наиболее понятным или единообразным использованием терминов.
Это может сбивать с толку, и я запутался в своих мыслях, так что не думайте об этом особо. В любом случае контекст имеет большое значение.
Библиотека - чаще всего будет относиться к общей библиотеке или другой коллекции, созданной в аналогичном формате и использовании. Общая библиотека - это совокупность «стандартных», популярных и широко используемых модулей, которые на данный момент можно рассматривать как однофайловые инструменты или как сокращения, делающие вещи возможными или быстрее. Общая библиотека - это опция, которую большинство людей включают при установке Python. Поскольку он называется «Общая библиотека Python», он часто используется с похожей структурой и идеями. Ведьма - это просто набор модулей, может быть, даже пакетов, сгруппированных вместе, обычно в виде списка. Список обычно предназначен для их загрузки. Обычно это просто связанные файлы со схожими интересами. Это самый простой способ описать это.
Модуль - модуль относится к файлу. В файле есть сценарий «в нем», а имя файла - это имя модуля, файлы Python заканчиваются на .py. Все, что содержит файл, - это код, который запускается вместе, чтобы что-то произошло, используя функции, строки и т. Д. Основные модули, которые вы, вероятно, видите чаще всего, популярны, потому что это специальные модули, которые могут получать информацию из других файлов / модулей. Это сбивает с толку, потому что имена файла и модуля равны и просто опускают .py. На самом деле это просто код, который вы можете использовать как ярлык, написанный кем-то, чтобы сделать что-то проще или возможным.
Пакет - этот термин обычно используется иногда, хотя контекст имеет значение. По моему опыту, наиболее частое использование - несколько модулей (или файлов), сгруппированных вместе. Почему они сгруппированы вместе, может быть по нескольким причинам, то есть когда имеет значение контекст. Вот как я заметил термин пакет (ы)используемый. Они представляют собой группу загруженных, созданных и / или сохраненных модулей. Все это может быть правдой или только 1, но на самом деле это просто файл, который ссылается на другие файлы, которые должны быть в правильной структуре или формате, и вся эта сумма представляет собой сам пакет, установленный или мог быть включен в общая библиотека python. Пакет может содержать модули (файлы .py), потому что они зависят друг от друга и иногда могут работать некорректно или вообще. У каждой части (модуля / файла) пакета всегда есть общая цель, и общая сумма всех частей - это сам пакет.
Чаще всего в пакетах Python используются модули, потому что имя пакета - это имя модуля, который используется для соединения всех частей. Таким образом, вы можете ввести пакет, потому что это модуль, а также позволяет ему вызывать другие модули, которые не являются пакетами, потому что они выполняют только определенную функцию, или задача не связана с другими файлами. У пакетов есть цель, и каждый модуль работает вместе для достижения этой конечной цели.
Наибольшая путаница возникает из-за простого имени файла или префикса файла, используемого в качестве имени модуля, а затем снова имени пакета.
Помните, что модули и пакеты могут быть установлены. Библиотека - это обычно общий термин для перечисления или форматирования группы модулей и пакетов. Очень похоже на общую библиотеку Pythons. Иерархия не будет работать, API-интерфейсы на самом деле не принадлежат, и если бы вы это сделали, они могли бы быть где угодно и каждое изделие, включающее скрипт, модуль и пакеты, причем библиотека word - это такое общее слово, легко применимое ко многим вещам, также позволяет API сидеть выше или ниже этого. Некоторые модули могут быть основаны на другом коде, и я думаю, что это единственный раз, когда это касается обсуждения, связанного с чистым Python.
источник