Пакети Python: Як їх створювати та імпортувати?

У цій статті ви навчитесь ділити свою базу коду на чисті, ефективні модулі за допомогою пакетів Python. Крім того, ви навчитеся імпортувати та використовувати власні або сторонні пакети у вашій програмі Python.

Відео: Пакети Python: упорядкуйте свій код

Що таке пакети?

Зазвичай ми не зберігаємо всі файли на своєму комп’ютері в одному і тому ж місці. Для зручності ми використовуємо добре організовану ієрархію каталогів.

Подібні файли зберігаються в одному каталозі, наприклад, ми можемо зберігати всі пісні в каталозі " музика ". Аналогічно цьому, Python має пакети для каталогів та модулі для файлів.

Оскільки наша прикладна програма збільшується в розмірі з великою кількістю модулів, ми поміщаємо подібні модулі в один пакет, а різні модулі в різні пакети. Це робить проект (програму) простим в управлінні та концептуально зрозумілим.

Так само, оскільки каталог може містити підкаталоги та файли, пакет Python може мати підпакети та модулі.

Каталог повинен містити файл із іменем __init__.py, щоб Python розглядав його як пакет. Цей файл можна залишити порожнім, але ми зазвичай розміщуємо в ньому код ініціалізації для цього пакета.

Ось приклад. Припустимо, ми розробляємо гру. Однією з можливих організацій пакетів та модулів може бути така, як показано на малюнку нижче.

Структура модуля пакету в програмуванні на Python

Імпорт модуля з пакета

Ми можемо імпортувати модулі з пакетів за допомогою оператора dot (.).

Наприклад, якщо ми хочемо імпортувати startмодуль у наведеному вище прикладі, це можна зробити наступним чином:

 import Game.Level.start

Тепер, якщо цей модуль містить функцію з іменем select_difficulty(), ми повинні використовувати повне ім’я для посилання на неї.

 Game.Level.start.select_difficulty(2)

Якщо ця конструкція здається тривалою, ми можемо імпортувати модуль без префікса пакета наступним чином:

 from Game.Level import start

Тепер ми можемо викликати функцію просто наступним чином:

 start.select_difficulty(2)

Іншим способом імпортування лише необхідної функції (або класу чи змінної) з модуля в пакеті є такий:

 from Game.Level.start import select_difficulty

Тепер ми можемо безпосередньо викликати цю функцію.

 select_difficulty(2)

Цей спосіб хоч і простіший, але не рекомендується. Використання повного простору імен дозволяє уникнути плутанини та запобігає зіткненню двох однакових імен ідентифікаторів.

Під час імпорту пакунків Python виглядає у списку каталогів, визначених у sys.path, подібно до шляху пошуку модуля.

Цікаві статті...