Balíky Pythonu: Ako ich vytvoriť a importovať?

V tomto článku sa naučíte rozdeliť svoju kódovú základňu na čisté a efektívne moduly pomocou balíkov Python. Naučíte sa tiež importovať a používať svoje vlastné balíčky alebo balíčky tretích strán v programe Python.

Video: Balíčky Pythonu: Usporiadajte si kód

Čo sú to balíčky?

Zvyčajne neuchovávame všetky naše súbory v počítači na rovnakom mieste. Pre ľahší prístup používame prehľadnú hierarchiu adresárov.

Podobné súbory sa uchovávajú v rovnakom adresári, napríklad môžeme uložiť všetky skladby v adresári „ hudba “. Analogicky k tomu má Python balíčky pre adresáre a moduly pre súbory.

Pretože sa náš aplikačný program zväčšuje s množstvom modulov, umiestňujeme podobné moduly do jedného balíka a rôzne moduly do rôznych balíkov. Vďaka tomu je projekt (program) ľahko riaditeľný a koncepčne jasný.

Podobne, pretože adresár môže obsahovať podadresáre a súbory, môže balík Python obsahovať čiastkové balíčky a moduly.

Adresár musí obsahovať súbor s názvom, __init__.pyaby ho Python mohol považovať za balík. Tento súbor môže zostať prázdny, ale do tohto súboru obvykle umiestnime inicializačný kód pre tento balík.

Tu je príklad. Predpokladajme, že vyvíjame hru. Jedna možná organizácia balíkov a modulov môže byť znázornená na obrázku nižšie.

Štruktúra modulu balíka v programovaní v Pythone

Importuje sa modul z balíka

Moduly z balíkov môžeme importovať pomocou operátora bodka (.).

Napríklad ak chceme importovať startmodul z vyššie uvedeného príkladu, je to možné urobiť nasledovne:

 import Game.Level.start

Teraz, ak tento modul obsahuje pomenovanú funkciu select_difficulty(), musíme na jej označenie použiť celé meno.

 Game.Level.start.select_difficulty(2)

Ak sa táto konštrukcia zdá byť zdĺhavá, môžeme modul importovať bez predpony balíka nasledovne:

 from Game.Level import start

Teraz môžeme funkciu nazvať takto:

 start.select_difficulty(2)

Iný spôsob importu iba požadovanej funkcie (alebo triedy alebo premennej) z modulu v balíku by bol nasledovný:

 from Game.Level.start import select_difficulty

Teraz môžeme túto funkciu priamo nazvať.

 select_difficulty(2)

Aj keď je to jednoduchšie, táto metóda sa neodporúča. Využitie celého priestoru mien zabráni zmätkom a zabráni kolízii dvoch rovnakých mien identifikátorov.

Počas importovania balíkov Python vyzerá v zozname adresárov definovaných v sys.path, podobne ako v prípade vyhľadávacej cesty modulu.

Zaujímavé články...