Ovo predavanje će se baviti modulima i paketima u Pythonu.
Oni su način organiziranja vašeg koda u obliku datoteka i stvarno su važni ako namjeravate graditi web aplikacije s Pythonom
moduli
Modul u Pythonu je u osnovi datoteka s nekim python kodom koji koristimo za organiziranje našeg koda u datoteke. Zamislite to kao dijelove u supermarketu. Kad odete u supermarket, postoje različiti odjeljci za voće, povrće, sredstva za čišćenje itd. Ne vidite jedan odjeljak sa svim proizvodima.
Isti je koncept u programiranju. Umjesto da cijeli naš kod sa svim funkcijama i klasama napišemo u main.py, razbijamo naš kod u više datoteka. Svaka datoteka se naziva modul. Uz to, ne samo da je naš kod bolje organiziran i strukturiran, već također imamo mogućnost ponovne upotrebe našeg koda. Pogledajmo to kroz primjer.
Definirajmo dvije funkcije za pretvorbu težine iz funti u kilograme i obrnuto.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Sada možemo uzeti ove dvije funkcije i staviti ih u zaseban modul koji se zove "pretvarači", a zatim se mogu uvesti u bilo koji program koji treba te funkcije pretvornika. Dopustite da vam pokažem kako to učiniti.
Otvorimo našu projektnu ploču i desnom tipkom miša kliknite projekt i dodajte novu datoteku. Ovu ćemo datoteku nazvati "Converters.py".
Sada kopirajte kod iz zadane datoteke i zalijepite ga u “Converters.py”.
Time smo očistili naš glavni modul i nije prenatrpan različitim funkcijama. Kako pišemo više funkcija s klasama, stavljamo ih u njihove odgovarajuće module. Modul treba sadržavati sve povezane funkcije i klase. Sada želimo uvesti modul pretvarača u naš modul aplikacije. Da biste to učinili, pišite import converters
na vrhu bez ekstenzije “.py”.
Članovima modula možemo pristupiti korištenjem operatora točke slično metodama.
Pretvorimo 70 kg u funte:
Postoji i druga sintaksa za uvoz modula. Umjesto uvoza cijelog modula, možemo uvoziti određene funkcije iz tog modula. Možemo tipkati from Converters import
i pritisnite “control + space za prikaz popisa dostupnih funkcija. Ovime možemo izravno pozvati ovu funkciju.
Vježba
Evo vaše vježbe.
Ovo je povezano s vježbom s predavanja gdje smo raspravljali o “za petlje” gdje smo napisali program za pronalaženje najvećeg broja s popisa
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Ovaj kod trenutno nema organizaciju. Nemamo nikakve funkcije ili module i program je napisan u jednoj datoteci. To je u redu za male programe, ali kako vaši programi rastu, morate pravilno organizirati svoj kod u klase i module. Stoga, kao dio ove vježbe, želim da napišete funkciju, nazovite je find_max
. Ova funkcija treba uzeti popis i vratiti najveći broj na tom popisu. Nakon toga samo naprijed i stavite ovu funkciju u zaseban modul, ekstrahirajte je odavde i stavite u modul pod nazivom utils
. Ovaj modul bi trebao sadržavati hrpu pomoćnih funkcija. Uvezi utils
modul u trenutni modul i poziv find_max
funkcija. Na kraju dobijte rezultat i ispišite ga na terminalu.
Ova vježba je malo zahtjevna, ali lako izvediva.
Riješenje
Započnite definiranjem funkcije find_max
i dodajte parametar koji se zove brojevi. Unutar ove funkcije napišite algoritam za pronalaženje najvećeg broja na listi.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Spremite ovaj kod u datoteku "utils.py" kao modul.
Natrag na naš glavni program, samo uvezite modul bilo kojom od dvije sintakse i jednostavno izvršite logiku.
Jedna stvar na koju vam moram skrenuti pozornost je potkopana max
. Razlog za to je max
je ugrađena funkcija u Python i mi je redefiniramo. Dakle, ovo je upozorenje od strane Python kompajler da više ne možemo koristiti max kao njegovu ugrađenu funkciju.
Ugrađeni moduli u Pythonu
Python dolazi sa standardnom bibliotekom koja sadrži nekoliko modula za uobičajene zadatke kao što su slanje e-pošte, rad s datumom i vremenom, generiranje nasumičnih vrijednosti i lozinki i tako dalje. Toliko je modula već ugrađeno u Python što znači da već postoji puno funkcionalnosti koje možemo ponovno upotrijebiti. Ove module možete pronaći ovdje.
Paketi
Paketi su u osnovi još jedan način organiziranja našeg koda na vrhu modula. Pravi projekt može sadržavati stotine ili čak tisuće modula i s vremenom će se naš direktorij napuhati s toliko mnogo datoteka. Stoga je bolji pristup organizirati povezane module unutar paketa što paket čini spremnikom za više modula.
Projektu se dodaje novi direktorij i svi povezani moduli se dodaju u taj direktorij. Kao primjer, razmislite o trgovačkom centru. Postoje različiti odjeljci za mušku, žensku i dječju odjeću u trgovačkim centrima koji su poput paketa. Svaki odjeljak ima različita područja za različite vrste proizvoda kao što su cipele, majice i jakne. Zamislite ovo kao module.
Pogledajmo kako kreirati i koristiti pakete u Pythonu.
Prvo dodajte novi direktorij s projektne ploče. Nazovimo to "e-trgovina". Ovaj paket će sadržavati sve module koji se odnose na eCommerce aplikaciju.
To je još uvijek prazan direktorij i da bismo ga pretvorili u paket, moramo stvoriti posebnu datoteku u njemu. Dodajte novu python datoteku u ovaj direktorij i nazovite tu datoteku “__init__”. To je posebna konvencija u Pythonu i kada Python interpreter vidi datoteku s ovim imenom u direktoriju, on taj direktorij tretira kao paket.
Imamo i alternativnu i sažetu metodu za izradu paketa. Samo desnom tipkom miša kliknite ploču projekta i izradite Python paket s popisa. Nazovite ga "e-trgovina" i to je to. Automatski će stvoriti direktorij s Python datotekom pod nazivom “__init__”.
Kreirajmo sada modul u paketu i nazovimo ga "dostava". U ovom modulu izradimo jednostavnu funkciju za izračun troškova dostave.
def calc_shipping():
print("calc_shipping")
Da bismo pristupili ovoj funkciji u našem glavnom modulu, moramo joj pristupiti putem paketa e-trgovine. Još jednom imamo dvije metode za uvoz ovog modula.
U prvoj metodi možemo uvesti cijeli modul i zatim neovisno pozvati funkciju ovako:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Međutim, s ovim pristupom, pozivanje jedne od funkcija ovog modula zahtijeva dodavanje prefiksa eCommerce.shipping.
To je vrlo opširno. Dakle, kada radimo s paketima često koristimo drugi pristup i koristimo from
izjava.
from eCommerce.shipping import calc_shipping
calc_shipping()
Ako imate više funkcija u jednom modulu, možete ih sve uvesti u jednom retku koristeći zareze između njih. Recimo da postoji još jedna funkcija za izračun poreza u našem modulu za dostavu. To će biti uvezeno ovako:
from eCommerce.shipping import calc_shipping, calc_tax
Također možete uvesti pojedinačne module i ostaviti funkcije za pozivanje u kasnijoj fazi programa. Uvezimo otpremu modula i zatim upotrijebimo operator točke za poziv funkcije calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Zamotati!
Paketi i moduli iznimno su važni u Pythonu. Pogotovo kada želite raditi s okvirom kao što je Django koji se koristi za izgradnju web aplikacije s Pythonom. Razmotrit ćemo Django tijekom drugog tečaja Pythona.
Ovo je bilo posljednje konvencionalno predavanje u ovoj seriji. Sljedeće predavanje odstupit će od našeg uobičajenog formata i naučit ćemo neke važne slučajeve uporabe u Pythonu. To će označiti kraj ove serije i prijeći ćemo na našu sljedeću Python seriju. Pratite nas za to.
Ostavi odgovor