Ответ
В Python модуль — это отдельный файл с расширением .py
, который содержит исполняемый код: функции, классы, переменные и другие инструкции. Модули позволяют логически группировать связанный код и повторно использовать его в разных частях программы.
Пример модуля:
# my_module.py
def greet(name):
return f"Hello, {name}!"
class MyClass:
pass
Пакет — это директория (каталог) в файловой системе, которая содержит один или несколько модулей, а также специальный файл __init__.py
. Наличие __init__.py
(даже пустого) указывает Python, что данная директория должна рассматриваться как пакет. Пакеты используются для организации модулей в иерархическую структуру, что особенно полезно для крупных проектов, помогая избежать конфликтов имен и улучшая читаемость кода.
Структура пакета:
my_package/
├── __init__.py # Обязательный файл для Python 2, опциональный для Python 3.3+ (но рекомендуется)
├── module1.py
└── subpackage/
├── __init__.py
└── module2.py
Ключевые отличия:
- Модуль: Один файл
.py
. Представляет собой единицу кода. - Пакет: Директория, содержащая модули (и, возможно, подпакеты) и файл
__init__.py
. Представляет собой способ организации множества модулей. - Назначение: Модули группируют связанный код; пакеты группируют связанные модули и подпакеты, создавая пространство имен.
- Иерархия: Модули не имеют внутренней иерархии (кроме того, что они находятся в файловой системе); пакеты поддерживают вложенность (подпакеты).
Примеры импорта:
# Импорт модуля
import my_module
print(my_module.greet("World"))
# Импорт модуля из пакета
from my_package import module1
# Или: import my_package.module1
# Или: from my_package.subpackage.module2 import some_function