Пакети на 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, подобно на пътя за търсене на модули.

Интересни статии...