Paketi Python: Kako jih ustvariti in uvoziti?

V tem članku se boste naučili razdeliti svojo kodno osnovo na čiste, učinkovite module s pomočjo paketov Python. Prav tako se boste naučili uvažati in uporabljati lastne pakete ali programe tretjih oseb v programu Python.

Video: Paketi Python: organizirajte svojo kodo

Kaj so paketi?

Običajno ne shranimo vseh datotek v računalnik na istem mestu. Za lažji dostop uporabljamo dobro organizirano hierarhijo imenikov.

Podobne datoteke se hranijo v istem imeniku, na primer, lahko vse skladbe shranimo v imenik " glasba ". Analogno temu ima Python pakete za imenike in module za datoteke.

Ker se naš aplikacijski program povečuje z veliko moduli, postavimo podobne module v en paket, različne module pa v različne pakete. Tako je projekt (program) enostaven za upravljanje in konceptualno jasen.

Podobno, ker lahko imenik vsebuje podimenike in datoteke, lahko paket Python vsebuje podpakete in module.

Imenik mora vsebovati datoteko z imenom, __init__.pyda jo Python lahko obravnava kot paket. Ta datoteka lahko ostane prazna, vendar v to datoteko običajno vstavimo inicializacijsko kodo za ta paket.

Tu je primer. Recimo, da razvijamo igro. Ena od možnih organizacij paketov in modulov bi lahko bila, kot je prikazano na spodnji sliki.

Struktura paketnega modula v programiranju na Python

Uvoz modula iz paketa

Module lahko uvozimo iz paketov z uporabo operatorja pika (.).

Če želimo na primer startmodul uvoziti v zgornjem primeru, lahko to storimo na naslednji način:

 import Game.Level.start

Če ta modul vsebuje poimenovano funkcijo select_difficulty(), moramo za sklicevanje nanjo uporabiti polno ime.

 Game.Level.start.select_difficulty(2)

Če se ta konstrukcija zdi dolgotrajna, lahko modul uvozimo brez predpone paketa, kot sledi:

 from Game.Level import start

Zdaj lahko funkcijo pokličemo preprosto tako:

 start.select_difficulty(2)

Drug način uvoza samo zahtevane funkcije (ali razreda ali spremenljivke) iz modula v paketu bi bil naslednji:

 from Game.Level.start import select_difficulty

Zdaj lahko to funkcijo neposredno pokličemo.

 select_difficulty(2)

Čeprav je ta metoda lažja, odsvetujemo. Uporaba celotnega imenskega prostora preprečuje zmedo in preprečuje trčenje dveh enakih imen identifikatorjev.

Med uvozom paketov Python pogleda na seznam imenikov, definiranih v sys.path, podobno kot pri iskanju modulov.

Zanimive Članki...