„Python“ paketai: kaip juos sukurti ir importuoti?

Šiame straipsnyje sužinosite padalinti savo kodų bazę į švarius, efektyvius modulius, naudodami „Python“ paketus. Be to, išmoksite importuoti ir naudoti savo ar trečiųjų šalių paketus savo „Python“ programoje.

Vaizdo įrašas: „Python“ paketai: tvarkykite kodą

Kas yra paketai?

Paprastai ne visi failai saugomi kompiuteryje toje pačioje vietoje. Kad būtų lengviau pasiekti, naudojame gerai organizuotą katalogų hierarchiją.

Panašūs failai laikomi tame pačiame kataloge, pavyzdžiui, visas dainas galime laikyti kataloge „ muzika “. Analogiškai tai, „Python“ turi paketus katalogams ir failų modulius.

Kadangi mūsų taikomoji programa tampa vis didesnė, turint daug modulių, panašius modulius dedame į vieną paketą ir skirtingus modulius į skirtingus paketus. Tai daro projektą (programą) lengvai valdomą ir konceptualiai aiškų.

Panašiai, kadangi kataloge gali būti pakatalogių ir failų, „Python“ paketas gali turėti paketus ir modulius.

Kataloge turi būti failas, pavadintas __init__.py, kad „Python“ galėtų jį laikyti paketu. Šį failą galima palikti tuščią, tačiau paprastai į šį failą dedame to paketo inicializavimo kodą.

Štai pavyzdys. Tarkime, kad kuriame žaidimą. Vienas iš galimų paketų ir modulių organizavimo būdų gali būti toks, kaip parodyta toliau pateiktame paveikslėlyje.

Paketo modulio struktūra programuojant „Python“

Importuojamas modulis iš paketo

Mes galime importuoti modulius iš paketų naudodami dot (.) Operatorių.

Pavyzdžiui, jei norime importuoti startmodulį aukščiau pateiktame pavyzdyje, tai galima padaryti taip:

 import Game.Level.start

Dabar, jei šiame modulyje yra funkcija, pavadinta select_difficulty(), mes turime naudoti visą vardą, kad ją nurodytume.

 Game.Level.start.select_difficulty(2)

Jei ši konstrukcija atrodo ilga, modulį be paketo priešdėlio galime importuoti taip:

 from Game.Level import start

Dabar funkciją galime vadinti taip:

 start.select_difficulty(2)

Kitas būdas importuoti tik reikiamą funkciją (arba klasę ar kintamąjį) iš paketo modulio būtų toks:

 from Game.Level.start import select_difficulty

Dabar galime tiesiogiai paskambinti šiai funkcijai.

 select_difficulty(2)

Šis metodas nerekomenduojamas, nors ir lengvesnis. Naudojant visą vardų sritį išvengiama painiavos ir neleidžiama susidurti dviem to paties identifikatoriaus vardams.

Importuodamas paketus, „Python“ ieško katalogų, apibrėžtų, sąraše sys.path, panašiai kaip modulio paieškos kelyje.

Įdomios straipsniai...