Чтобы создать пакет в Python, нужно:
__init__.py
внутри этой директории (он может быть пустым). Этот файл указывает Python, что директория является пакетом..py
) внутри директории пакета.__init__.py
).Пример:
my_package/ ├── __init__.py ├── module1.py └── submodule/ ├── __init__.py └── module2.py
Создание пакета в Python – это способ организации модулей кода в иерархическую структуру каталогов, что улучшает повторное использование и организацию кода.
Вот шаги по созданию пакета:
my_package
.__init__.py
: Этот файл необходим в каждом каталоге пакета (и подпакета), чтобы Python распознал его как пакет. __init__.py
может быть пустым, но также может содержать код инициализации для пакета (например, импорт часто используемых модулей)..py
, содержащие ваш код. Например, module1.py
и module2.py
.__init__.py
. Например, my_package/sub_package/__init__.py
и my_package/sub_package/module3.py
.Пример структуры каталогов:
my_package/
├── __init__.py
├── module1.py
├── module2.py
└── sub_package/
├── __init__.py
└── module3.py
Использование пакета:
Чтобы использовать пакет, его нужно импортировать в ваш код. Существует несколько способов импорта:
import my_package.module1
: Импортирует модуль module1
из пакета my_package
. Для доступа к функциям и классам в module1
используйте my_package.module1.function_name()
.from my_package import module1
: Импортирует модуль module1
из пакета my_package
. Для доступа к функциям и классам в module1
используйте module1.function_name()
.from my_package.module1 import function_name
: Импортирует конкретную функцию function_name
из модуля module1
. Для доступа к функции используйте function_name()
.from my_package import *
: Импортирует все имена, определенные в файле __init__.py
пакета. Важно: Этот способ импорта не рекомендуется, так как он может привести к загрязнению пространства имен и конфликтам имен. Лучше явно импортировать необходимые модули и функции.Пример кода (my_package/module1.py
):
def say_hello(name):
return f"Hello, {name}!"
Пример кода (использование пакета):
import my_package.module1
message = my_package.module1.say_hello("World")
print(message) # Output: Hello, World!
from my_package import module1
message = module1.say_hello("Another World")
print(message) # Output: Hello, Another World!
В заключение: Создание пакета позволяет структурировать код, делать его более читаемым и поддерживаемым, а также упрощает повторное использование кода в различных проектах.