Obsah[Skrýt][Ukázat]
Tato přednáška se bude týkat modulů a balíčků v Pythonu.
Představují způsob, jak organizovat váš kód ve formě souborů a jsou opravdu důležité, pokud máte v úmyslu vytvářet webové aplikace s Pythonem
moduly
Modul v Pythonu je v podstatě soubor s nějakým kódem pythonu, který používáme k uspořádání našeho kódu do souborů. Představte si to jako sekce v supermarketu. Když jdete do supermarketu, jsou tam různé sekce pro ovoce, zeleninu, čisticí prostředky atd. Nevidíte jednu sekci se všemi produkty.
Je to stejný koncept v programování. Namísto psaní celého našeho kódu se všemi funkcemi a třídami v main.py rozdělujeme náš kód do více souborů. Každý soubor je označován jako modul. Díky tomu je náš kód nejen lépe organizován a strukturován, ale máme také možnost znovu použít náš kód. Podívejme se na to na příkladu.
Definujme si dvě funkce pro převod hmotnosti z liber na kilogramy a naopak.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Nyní můžeme vzít tyto dvě funkce a umístit je do samostatného modulu zvaného „převodníky“ a poté je lze importovat do libovolného programu, který tyto funkce převodníku potřebuje. Dovolte mi ukázat vám, jak to udělat.
Otevřete náš panel projektu a klikněte pravým tlačítkem na projekt a přidejte nový soubor. Tento soubor budeme nazývat „Converters.py“.
Nyní zkopírujte kód z výchozího souboru a vložte jej do „Converters.py“.
Tímto jsme vyčistili náš hlavní modul a není přeplněný různými funkcemi. Jak píšeme více funkcí s třídami, vkládáme je do jejich odpovídajících modulů. Modul by měl obsahovat všechny související funkce a třídy. Nyní chceme importovat modul převodníků do našeho modulu aplikace. Chcete-li to provést, napište import converters
nahoře bez přípony „.py“.
Ke členům modulu můžeme přistupovat pomocí tečkového operátoru podobného metodám.
Převedeme 70 kg na libry:
Existuje také další syntaxe pro import modulů. Namísto importu celého modulu můžeme importovat konkrétní funkce z tohoto modulu. Můžeme psát from Converters import
a stiskněte „control + mezerník pro zobrazení seznamu dostupných funkcí. Díky tomu můžeme tuto funkci přímo volat.
Uplatňovat
Zde je vaše cvičení.
To souvisí s cvičením z přednášky, kde jsme diskutovali „pro smyčky” kde jsme napsali program pro zjištění největšího čísla ze seznamu
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Tento kód momentálně nemá žádnou organizaci. Nemáme žádné funkce ani moduly a program je napsán v jediném souboru. To je v pořádku pro malé programy, ale jak vaše programy rostou, musíte svůj kód správně organizovat do tříd a modulů. Proto v rámci tohoto cvičení chci, abyste napsali funkci, zavolali ji find_max
. Tato funkce by měla vzít seznam a vrátit největší číslo v tomto seznamu. Poté pokračujte a vložte tuto funkci do samostatného modulu, extrahujte ji odtud a vložte ji do modulu s názvem utils
. Tento modul by měl obsahovat spoustu užitečných funkcí. Importujte utils
modul do aktuálního modulu a zavolejte find_max
funkce. Nakonec získejte výsledek a vytiskněte jej na terminálu.
Toto cvičení je trochu náročné, ale snadno proveditelné.
Řešení
Začněte definováním funkce find_max
a přidejte parametr nazvaný čísla. Uvnitř této funkce napište algoritmus pro nalezení největšího čísla v seznamu.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Uložte tento kód do souboru „utils.py“ jako modul.
Zpět do našeho hlavního programu, stačí importovat modul některou ze dvou syntaxí a jednoduše provést logiku.
Jedna věc, na kterou musím upozornit, je podkopání max
. Důvodem pro to je max
je vestavěná funkce v Pythonu a my ji předefinujeme. Takže toto je varování od Python kompilátor že již nemůžeme používat max jako jeho vestavěnou funkci.
Vestavěné moduly v Pythonu
Python přichází se standardní knihovnou, která obsahuje několik modulů pro běžné úkoly, jako je odesílání e-mailů, práce s datem a časem, generování náhodných hodnot a hesel a tak dále. V Pythonu je již zabudováno tolik modulů, což znamená, že již existuje spousta funkcí, které můžeme znovu použít. Tyto moduly najdete zde.
Balíčky
Balíčky jsou v podstatě dalším způsobem, jak uspořádat náš kód nad moduly. Skutečný projekt může obsahovat stovky nebo dokonce tisíce modulů a časem se náš adresář zaplní tolika soubory. Proto je lepším přístupem uspořádat související moduly uvnitř balíčku, což z balíčku udělá kontejner pro více modulů.
Do projektu je přidán nový adresář a do tohoto adresáře jsou přidány všechny související moduly. Jako příklad si představte nákupní centrum. V nákupním centru jsou různé sekce pro pánské, dámské a dětské oblečení, které jsou jako balíčky. Každá sekce má různé oblasti pro různé druhy produktů, jako jsou boty, trička a bundy. Představte si je jako moduly.
Podívejme se, jak vytvářet a používat balíčky v Pythonu.
Nejprve přidejte nový adresář z panelu projektu. Říkejme tomu „eCommerce“. Tento balíček bude obsahovat všechny moduly související s aplikací eCommerce.
Stále je to prázdný adresář a abychom ho převedli na balíček, musíme v něm vytvořit speciální soubor. Přidejte nový soubor python do tohoto adresáře a pojmenujte jej „__init__“. Je to zvláštní konvence v Pythonu a když interpret Pythonu vidí soubor s tímto názvem v adresáři, považuje tento adresář za balíček.
Máme také alternativní a stručnou metodu k vytvoření balíčku. Stačí kliknout pravým tlačítkem na panel projektu a vytvořit balíček Python ze seznamu. Pojmenujte to „eCommerce“ a je to. Automaticky vytvoří adresář se souborem Python s názvem „__init__“.
Nyní vytvoříme modul v balíčku a pojmenujeme jej „shipping“. V tomto modulu si vytvoříme jednoduchou funkci pro výpočet nákladů na dopravu.
def calc_shipping():
print("calc_shipping")
Abychom měli přístup k této funkci v našem hlavním modulu, musíme k ní přistupovat prostřednictvím balíčku e-commerce. Opět máme dva způsoby, jak tento modul importovat.
V první metodě můžeme importovat celý modul a poté volat funkci nezávisle takto:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
S tímto přístupem však volání jedné z funkcí do tohoto modulu vyžaduje předponu s eCommerce.shipping.
To je velmi podrobné. Takže při práci s balíčky často používáme druhý přístup a používáme from
prohlášení.
from eCommerce.shipping import calc_shipping
calc_shipping()
Pokud máte více funkcí v jednom modulu, můžete je všechny importovat na jednom řádku tak, že je oddělíte čárkami. Řekněme, že v našem přepravním modulu je další funkce pro výpočet daně. To bude importováno takto:
from eCommerce.shipping import calc_shipping, calc_tax
Můžete také importovat jednotlivé moduly a ponechat funkce k vyvolání v pozdější fázi programu. Naimportujme zásilku modulu a poté pomocí tečkového operátoru zavolejte funkci calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Zabalit!
Balíčky a moduly jsou v Pythonu nesmírně důležité. Zvláště, když chcete pracovat s frameworkem jako Django, který se používá pro stavbu webové aplikace s Pythonem. Na Djanga se podíváme během dalšího kurzu Pythonu.
Toto byla poslední konvenční přednáška v tomto cyklu. Příští přednáška se bude odchylovat od našeho obvyklého formátu a naučíme se některé důležité případy použití v Pythonu. To bude znamenat konec této série a přejdeme k naší další sérii Python. Zůstaňte naladěni.
Napsat komentář