Питхон пакети: Како их креирати и увести?

У овом чланку ћете научити да поделите базу кода на чисте, ефикасне модуле помоћу Питхон пакета. Такође ћете научити да увозите и користите сопствене или независне пакете у свом програму Питхон.

Видео: Питхон пакети: Организујте свој код

Шта су пакети?

Обично не складиштимо све датотеке на рачунару на истом месту. За лакши приступ користимо добро организовану хијерархију директорија.

Сличне датотеке се чувају у истом директоријуму, на пример, све песме можемо чувати у директоријуму „ музика “. Аналогно овоме, Питхон има пакете за директоријуме и модуле за датотеке.

Како наш апликативни програм расте са пуно модула, ми стављамо сличне модуле у један пакет, а различите модуле у различите пакете. Ово чини пројектом (програмом) лако управљање и концептуално јасан.

Слично томе, како директоријум може садржавати поддиректоријуме и датотеке, Питхон пакет може имати подпакете и модуле.

Директоријум мора садржати датотеку именовану __init__.pyкако би је Питхон могао сматрати пакетом. Ову датотеку можете оставити празну, али у њу обично стављамо иницијализацијски код за тај пакет.

Ево примера. Претпоставимо да развијамо игру. Једна од могућих организација пакета и модула може бити као што је приказано на доњој слици.

Структура модула пакета у програмирању на Питхон

Увоз модула из пакета

Можемо увозити модуле из пакета помоћу оператора дот (.).

На пример, ако желимо да увозимо 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)

Иако је лакша, овај метод се не препоручује. Коришћење пуног простора имена избегава забуну и спречава сударање два иста имена идентификатора.

Док увози пакете, Питхон изгледа на листи директоријума дефинисаних у sys.path, слично као и за путању претраживања модула.

Занимљиви Чланци...