Táto prednáška sa bude týkať modulov a balíkov v Pythone.
Predstavujú spôsob, ako organizovať váš kód vo forme súborov a sú skutočne dôležité, ak máte v úmysle vytvárať webové aplikácie pomocou Pythonu
moduly
Modul v Pythone je v podstate súbor s nejakým pythonovým kódom, ktorý používame na organizáciu nášho kódu do súborov. Predstavte si to ako sekcie v supermarkete. Keď idete do supermarketu, sú tam rôzne sekcie pre ovocie, zeleninu, čistiace prostriedky atď. Nevidíte jednu sekciu so všetkými produktmi.
Je to rovnaký koncept v programovaní. Namiesto písania celého kódu so všetkými funkciami a triedami v main.py rozdeľujeme náš kód do viacerých súborov. Každý súbor sa označuje ako modul. Vďaka tomu je náš kód nielen lepšie organizovaný a štruktúrovaný, ale máme tiež možnosť znova použiť náš kód. Pozrime sa na to na príklade.
Definujme si dve funkcie na prevod hmotnosti z libier na kilogramy a naopak.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Teraz môžeme vziať tieto dve funkcie a vložiť ich do samostatného modulu s názvom „konvertory“ a potom ich možno importovať do akéhokoľvek programu, ktorý tieto funkcie prevodníka potrebuje. Ukážem vám, ako na to.
Otvorme náš panel projektu a kliknite pravým tlačidlom myši na projekt a pridajte nový súbor. Tento súbor budeme nazývať „Converters.py“.
Teraz skopírujte kód z predvoleného súboru a vložte ho do „Converters.py“.
Týmto sme vyčistili náš hlavný modul a nie je preplnený rôznymi funkciami. Keď píšeme viac funkcií s triedami, vkladáme ich do zodpovedajúcich modulov. Modul by mal obsahovať všetky súvisiace funkcie a triedy. Teraz chceme importovať modul prevodníkov do nášho modulu aplikácie. Ak to chcete urobiť, napíšte import converters
navrchu bez prípony „.py“.
K členom modulu môžeme pristupovať pomocou bodkového operátora podobného metódam.
Prepočítajme 70 kg na libry:
Existuje aj iná syntax pre import modulov. Namiesto importu celého modulu môžeme importovať konkrétne funkcie z tohto modulu. Môžeme písať from Converters import
a stlačením „control + medzerník“ zobrazíte zoznam dostupných funkcií. Pomocou toho môžeme túto funkciu priamo zavolať.
Cvičenie
Tu je vaše cvičenie.
Súvisí to s cvičením z prednášky, kde sme diskutovali „pre slučky” kde sme napísali program na zistenie najväčšieho čísla zo zoznamu
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Tento kód momentálne nemá žiadnu organizáciu. Nemáme žiadne funkcie ani moduly a program je napísaný v jednom súbore. To je v poriadku pre malé programy, ale ako vaše programy rastú, musíte svoj kód správne usporiadať do tried a modulov. Preto v rámci tohto cvičenia chcem, aby ste napísali funkciu, zavolali ju find_max
. Táto funkcia by mala vziať zoznam a vrátiť najväčšie číslo v tomto zozname. Potom pokračujte a vložte túto funkciu do samostatného modulu, extrahujte ju odtiaľto a vložte ju do modulu s názvom utils
. Tento modul by mal obsahovať množstvo užitočných funkcií. Importovať utils
modul do aktuálneho modulu a zavolajte find_max
funkciu. Nakoniec získajte výsledok a vytlačte ho na termináli.
Toto cvičenie je trochu náročné, ale ľahko realizovateľné.
Riešenie
Začnite definovaním funkcie find_max
a pridajte parameter s názvom čísla. Do tejto funkcie napíšte algoritmus na nájdenie najväčšieho čísla v zozname.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Uložte tento kód do súboru „utils.py“ ako modul.
Späť do nášho hlavného programu, stačí importovať modul jednou z dvoch syntaxí a jednoducho spustiť logiku.
Jedna vec, na ktorú musím upozorniť, je podkopanie max
. Dôvodom toho je max
je vstavaná funkcia v Pythone a my ju predefinujeme. Takže toto je varovanie od Kompilátor Pythonu že už nemôžeme používať max ako jeho vstavanú funkciu.
Vstavané moduly v Pythone
Python prichádza so štandardnou knižnicou, ktorá obsahuje niekoľko modulov pre bežné úlohy, ako je odosielanie e-mailov, práca s dátumom a časom, generovanie náhodných hodnôt a hesiel a podobne. V Pythone je už zabudovaných toľko modulov, čo znamená, že už existuje veľa funkcií, ktoré môžeme znova použiť. Tieto moduly nájdete tu.
Balíčky
Balíky sú v podstate ďalším spôsobom, ako organizovať náš kód nad modulmi. Skutočný projekt môže obsahovať stovky alebo dokonca tisíce modulov a časom sa náš adresár zaplní toľkými súbormi. Preto je lepším prístupom usporiadať súvisiace moduly vo vnútri balíka, čím sa balík stane kontajnerom pre viacero modulov.
Do projektu sa pridá nový adresár a do tohto adresára sa pridajú všetky súvisiace moduly. Ako príklad si predstavte nákupné centrum. V obchodnom centre sú rôzne sekcie pre pánske, dámske a detské oblečenie, ktoré sú ako balíčky. Každá sekcia má rôzne oblasti pre rôzne druhy produktov, ako sú topánky, tričká a bundy. Myslite na to ako na moduly.
Pozrime sa, ako vytvárať a používať balíčky v Pythone.
Najprv pridajte nový adresár z panela projektu. Nazvime to „elektronický obchod“. Tento balík bude obsahovať všetky moduly súvisiace s aplikáciou elektronického obchodu.
Stále je to prázdny adresár a na jeho konverziu na balík v ňom musíme vytvoriť špeciálny súbor. Pridajte nový súbor python do tohto adresára a pomenujte ho „__init__“. Je to špeciálna konvencia v Pythone a keď interpret Pythonu vidí súbor s týmto názvom v adresári, považuje tento adresár za balík.
Máme tiež alternatívnu a stručnú metódu na vytvorenie balíka. Stačí kliknúť pravým tlačidlom myši na panel projektu a vytvoriť balík Python zo zoznamu. Pomenujte to „eCommerce“ a je to. Automaticky vytvorí adresár so súborom Python s názvom „__init__“.
Teraz vytvorte modul v balíku a pomenujte ho „doprava“. V tomto module si vytvoríme jednoduchú funkciu na výpočet prepravných nákladov.
def calc_shipping():
print("calc_shipping")
Aby sme mali prístup k tejto funkcii v našom hlavnom module, musíme k nej pristupovať prostredníctvom balíka elektronického obchodu. Opäť máme dva spôsoby importovania tohto modulu.
V prvej metóde môžeme importovať celý modul a potom nezávisle zavolať funkciu takto:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Pri tomto prístupe však volanie jednej z funkcií do tohto modulu vyžaduje predponu s eCommerce.shipping.
To je veľmi podrobné. Takže pri práci s balíkmi často používame druhý prístup a používame from
vyhlásenia.
from eCommerce.shipping import calc_shipping
calc_shipping()
Ak máte viacero funkcií v jednom module, môžete ich importovať všetky v jednom riadku tak, že medzi nimi použijete čiarky. Povedzme, že v našom expedičnom module je ďalšia funkcia na výpočet dane. Importuje sa takto:
from eCommerce.shipping import calc_shipping, calc_tax
Môžete tiež importovať jednotlivé moduly a ponechať funkcie na volanie v neskoršej fáze programu. Naimportujme zásielku modulu a potom pomocou bodkového operátora zavolajte funkciu calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Zabaliť!
Balíky a moduly sú v Pythone mimoriadne dôležité. Najmä, keď chcete pracovať s rámcom ako Django, ktorý sa používa na budovanie webové aplikácie s Pythonom. Na Djanga sa pozrieme počas ďalšieho kurzu Pythonu.
Toto bola posledná konvenčná prednáška v tejto sérii. Nasledujúca prednáška sa bude odchyľovať od nášho obvyklého formátu a naučíme sa niektoré dôležité prípady použitia v Pythone. To bude znamenať koniec tejto série a prejdeme k našej ďalšej sérii Python. Zostaňte naladení.
Nechaj odpoveď