Python - Paketi (Package)


Šta su paketi (Package)?

Obično ne pohranjujemo sve datoteke na računaru na istom mjestu. Za lakši pristup koristimo dobro organiziranu hijerarhiju direktorija. Slične datoteke se čuvaju u istom direktoriju, na primjer, sve pjesme možemo zadržati u direktoriju "muzika". Analogno ovome, Python ima pakete za direktorijume i module za datoteke.

Kako naš aplikacijski program raste s puno modula, slične module smještamo u jedan paket, a različite module u različite pakete. To čini projekat (programom) jednostavnim za upravljanje i konceptualno jasanim. Slično tome, kako direktorij može da sadrži poddirektorijume i datoteke, Python paket može imati podpakete i module. Direktorij mora sadržavati datoteku koja se zove __init__.py da bi je Python smatrao paketom. Ova datoteka može ostati prazna, ali u nju obično stavljamo inicijalizacijski kod za taj paket.

Evo primjera. Pretpostavimo da razvijamo igru. Jedna od mogućih organizacija paketa i modula može biti kao što je prikazano na sljedećoj slici.





Uvoz modula iz paketa

Module možemo uvesti iz paketa pomoću operatora tačke (.). Na primjer, ako želimo uvesti početni modul u gornjem primjeru, to se može učiniti na sljedeći način:

import Game.Level.start

Sada, ako ovaj modul sadrži funkciju koja se naziva select_difficffic(), moramo upotrijebiti puno ime da bismo je referencirali.

Game.Level.start.select_difficulty(2)

Drugi način uvoza samo potrebne funkcije (ili klase ili varijable) iz modula u paketu bio bi sljedeći:

from Game.Level.start import select_difficulty

Sada možemo direktno pozvati ovu funkciju.

select_difficulty(2)

Iako je lakša, ova metoda se ne preporučuje. Korištenje punog prostora imena izbjegava zbrku i sprječava sudaranje dva ista imena identifikatora. Dok uvozi pakete, Python izgleda na listi direktorija definisanih u sys.path, slično kao i za putanju pretraživanja modula.