To predavanje bo obravnavalo module in pakete v Pythonu.
So način za organiziranje vaše kode v obliki datotek in so zelo pomembni, če nameravate graditi spletne aplikacije s Pythonom
Moduli
Modul v Pythonu je v bistvu datoteka z nekaj kode python, ki jo uporabljamo za organiziranje naše kode v datoteke. Zamislite si to kot oddelke v supermarketu. Ko greste v supermarket, so na voljo različni oddelki za sadje, zelenjavo, čistila itd. Ne vidite enega oddelka z vsemi izdelki.
Enak koncept je v programiranju. Namesto da bi napisali vso našo kodo z vsemi funkcijami in razredi v main.py, svojo kodo razdelimo na več datotek. Vsaka datoteka se imenuje modul. S tem ni samo naša koda bolje organizirana in strukturirana, ampak imamo tudi možnost ponovne uporabe kode. Oglejmo si to na primeru.
Določimo dve funkciji za pretvorbo teže iz funtov v kilograme in obratno.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Zdaj lahko vzamemo ti dve funkciji in ju postavimo v ločen modul, imenovan »pretvorniki«, nato pa ju lahko uvozimo v kateri koli program, ki potrebuje te funkcije pretvornika. Naj vam pokažem, kako se to naredi.
Odprimo našo projektno ploščo, z desno tipko miške kliknite projekt in dodajte novo datoteko. To datoteko bomo poimenovali »Converters.py«.
Zdaj kopirajte kodo iz privzete datoteke in jo prilepite v »Converters.py«.
S tem smo naš glavni modul očistili in ni prenatrpan z različnimi funkcijami. Ko pišemo več funkcij z razredi, jih postavimo v njihove ustrezne module. Modul mora vsebovati vse povezane funkcije in razrede. Zdaj želimo uvoziti modul pretvornikov v naš modul aplikacije. Če želite to narediti, napišite import converters
na vrhu brez končnice ».py«.
Do članov modula lahko dostopamo z uporabo operatorja pike, podobnega metodam.
Pretvorimo 70 kg v funte:
Obstaja tudi druga sintaksa za uvoz modulov. Namesto uvoza celotnega modula lahko uvozimo določene funkcije iz tega modula. Lahko tipkamo from Converters import
in pritisnite “control + preslednica, da prikažete seznam razpoložljivih funkcij. S tem lahko neposredno pokličemo to funkcijo.
Vaja
Tukaj je vaša vaja.
To je povezano z vajo iz predavanja, kjer smo razpravljali oza zanke”, kjer smo napisali program za iskanje največjega števila s seznama
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Ta koda trenutno nima organizacije. Nimamo nobenih funkcij ali modulov in program je napisan v eni sami datoteki. To je v redu za majhne programe, a ko vaši programi rastejo, morate svojo kodo pravilno organizirati v razrede in module. Zato kot del te vaje želim, da napišete funkcijo, jo pokličete find_max
. Ta funkcija bi morala vzeti seznam in vrniti največje število na tem seznamu. Po tem nadaljujte in postavite to funkcijo v ločen modul, ekstrahirajte jo od tukaj in jo postavite v modul, imenovan utils
. Ta modul bi moral vsebovati kup uporabnih funkcij. Uvozite utils
modul v trenutni modul in pokličite find_max
funkcijo. Na koncu pridobite rezultat in ga natisnite na terminalu.
Ta vaja je nekoliko zahtevna, a zlahka izvedljiva.
Rešitev
Začnite z definiranjem funkcije find_max
in dodajte parameter, imenovan številke. Znotraj te funkcije napišite algoritem za iskanje največjega števila na seznamu.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Shranite to kodo v datoteko "utils.py" kot modul.
Nazaj k našemu glavnemu programu, samo uvozite modul s katero koli od obeh sintaks in preprosto izvedite logiko.
Ena stvar, na katero moram opozoriti, je spodkopana max
. Razlog za to je max
je vgrajena funkcija v Python in jo na novo definiramo. To je torej opozorilo s strani Prevajalnik Python da ne moremo več uporabljati max kot njegove vgrajene funkcije.
Vgrajeni moduli v Pythonu
Python ima standardno knjižnico, ki vsebuje več modulov za običajna opravila, kot so pošiljanje e-pošte, delo z datumom in časom, generiranje naključnih vrednosti in gesel itd. V Python je že vgrajenih toliko modulov, kar pomeni, da že obstaja veliko funkcionalnosti, ki jih lahko ponovno uporabimo. Te module lahko najdete tukaj.
Paketi
Paketi so v bistvu še en način organiziranja kode na vrhu modulov. Pravi projekt lahko vsebuje na stotine ali celo tisoče modulov in sčasoma bo naš imenik napihnjen s toliko datotekami. Zato je boljši pristop organiziranje povezanih modulov znotraj paketa, zaradi česar je paket vsebnik za več modulov.
Projektu je dodan nov imenik in vsi povezani moduli so dodani v ta imenik. Kot primer pomislite na trgovsko središče. V nakupovalnem središču so različni oddelki za moška, ženska in otroška oblačila, ki so kot paketi. Vsak del ima različna področja za različne vrste izdelkov, kot so čevlji, majice in jakne. Pomislite na to kot na module.
Poglejmo, kako ustvariti in uporabljati pakete v Pythonu.
Najprej dodajte nov imenik s projektne plošče. Recimo temu »e-trgovina«. Ta paket bo vseboval vse module, povezane z aplikacijo e-trgovine.
To je še vedno prazen imenik in da ga pretvorimo v paket, moramo v njem ustvariti posebno datoteko. V ta imenik dodajte novo datoteko python in jo poimenujte »__init__«. To je posebna konvencija v Pythonu in ko tolmač Python vidi datoteko s tem imenom v imeniku, ta imenik obravnava kot paket.
Imamo tudi alternativno in jedrnato metodo za ustvarjanje paketa. Samo z desno miškino tipko kliknite ploščo projekta in s seznama ustvarite paket Python. Poimenujte ga »e-trgovina« in to je to. Samodejno bo ustvaril imenik z datoteko Python z imenom »__init__«.
Sedaj pa ustvarimo modul v paketu in ga poimenujmo »pošiljanje«. V tem modulu ustvarimo preprosto funkcijo za izračun stroškov pošiljanja.
def calc_shipping():
print("calc_shipping")
Za dostop do te funkcije v našem glavnem modulu moramo do nje dostopati prek paketa e-trgovine. Ponovno imamo dva načina za uvoz tega modula.
Pri prvi metodi lahko uvozimo celoten modul in nato neodvisno pokličemo funkcijo, kot je ta:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Vendar pa pri tem pristopu klicanje ene od funkcij v ta modul zahteva predpono z eCommerce.shipping.
To je zelo besedno. Torej pri delu s paketi pogosto uporabljamo drugi pristop in uporabljamo from
izjavo.
from eCommerce.shipping import calc_shipping
calc_shipping()
Če imate več funkcij v enem modulu, jih lahko vse uvozite v eni vrstici tako, da med njimi uporabite vejice. Recimo, da je v našem modulu za pošiljanje še ena funkcija za izračun davka. To bo uvoženo takole:
from eCommerce.shipping import calc_shipping, calc_tax
Lahko tudi uvozite posamezne module in pustite, da se funkcije prikličejo pozneje v programu. Uvozimo pošiljanje modula in nato uporabimo operator pike za klic funkcije calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Zaviti!
Paketi in moduli so v Pythonu izjemno pomembni. Še posebej, če želite delati z okvirjem, kot je Django, ki se uporablja za gradnjo spletne aplikacije s Pythonom. Django bomo preučili med drugim tečajem Pythona.
To je bilo zadnje klasično predavanje v tem ciklu. Naslednje predavanje bo odstopalo od našega običajnega formata in se bomo naučili nekaj pomembnih primerov uporabe v Pythonu. To bo pomenilo konec te serije in prešli bomo na našo naslednjo serijo Python. Ostanite z nami za to.
Pustite Odgovori