Balíčky Pythonu: Jak je vytvořit a importovat?

V tomto článku se naučíte rozdělit svou kódovou základnu na čisté a efektivní moduly pomocí balíčků Pythonu. Naučíte se také importovat a používat vlastní balíčky nebo balíčky třetích stran v programu Python.

Video: Balíčky Pythonu: Uspořádejte svůj kód

Co jsou balíčky?

Obvykle neukládáme všechny naše soubory v počítači na stejném místě. Pro snadnější přístup používáme dobře organizovanou hierarchii adresářů.

Podobné soubory jsou uloženy ve stejném adresáři, například můžeme uchovávat všechny skladby v adresáři „ hudba “. Analogicky k tomu má Python balíčky pro adresáře a moduly pro soubory.

Jak se náš aplikační program zvětšuje s mnoha moduly, umisťujeme podobné moduly do jednoho balíčku a různé moduly do různých balíčků. Díky tomu je projekt (program) snadno ovladatelný a koncepčně jasný.

Podobně jako adresář může obsahovat podadresáře a soubory, balíček Pythonu může mít dílčí balíčky a moduly.

Adresář musí obsahovat soubor s názvem, __init__.pyaby jej Python mohl považovat za balíček. Tento soubor může být ponechán prázdný, ale do tohoto souboru obvykle umístíme inicializační kód pro tento balíček.

Zde je příklad. Předpokládejme, že vyvíjíme hru. Jedna možná organizace balíčků a modulů může být, jak je znázorněno na obrázku níže.

Struktura modulu balíčku v programování v Pythonu

Import modulu z balíčku

Můžeme importovat moduly z balíčků pomocí operátoru tečka (.).

Například pokud chceme importovat startmodul ve výše uvedeném příkladu, lze to provést následovně:

 import Game.Level.start

Nyní, pokud tento modul obsahuje funkci s názvem select_difficulty(), musíme k jejímu odkazu použít celé jméno.

 Game.Level.start.select_difficulty(2)

Pokud se tato konstrukce zdá zdlouhavá, můžeme modul importovat bez předpony balíčku následovně:

 from Game.Level import start

Nyní můžeme funkci zavolat jednoduše takto:

 start.select_difficulty(2)

Další způsob importu pouze požadované funkce (nebo třídy nebo proměnné) z modulu v balíčku by byl následující:

 from Game.Level.start import select_difficulty

Nyní můžeme tuto funkci přímo zavolat.

 select_difficulty(2)

I když je to jednodušší, tato metoda se nedoporučuje. Použití celého oboru názvů zabrání nejasnostem a zabrání srážce dvou stejných jmen identifikátorů.

Při importu balíků vypadá Python v seznamu adresářů definovaných v sys.path, podobně jako u cesty hledání modulu.

Zajímavé články...