Ovo predavanje će obuhvatiti module i pakete u Python-u.
Oni su način da organizirate svoj kod u obliku datoteka i zaista su važni ako namjeravate da gradite web aplikacije sa Python-om
Moduli
Modul u Pythonu je u osnovi datoteka s nekim Python kodom koji koristimo da organiziramo naš kod u datoteke. Zamislite to kao odjeljke u supermarketu. Kada odete u supermarket, postoje različiti odjeli za voće, povrće, sredstva za čišćenje itd. Ne vidite jedan odjeljak sa svim proizvodima.
Isti je koncept u programiranju. Umjesto da napišemo sav naš kod sa svim funkcijama i klasama u main.py, razbijamo naš kod na više datoteka. Svaki fajl se naziva modulom. Uz to, ne samo da je naš kod bolje organiziran i strukturiran, već imamo i mogućnost ponovnog korištenja našeg koda. Pogledajmo to kroz primjer.
Definirajmo dvije funkcije za pretvaranje 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 poseban modul koji se zove "konvertori", a zatim se može uvesti u bilo koji program koji treba ove funkcije pretvarača. Dozvolite mi da vam pokažem kako se to radi.
Otvorimo panel projekta i kliknite desnim tasterom miša na projekat i dodajte novu datoteku. Ovu datoteku ćemo nazvati “Converters.py”.
Sada kopirajte kod iz zadane datoteke i zalijepite ga u “Converters.py”.
Ovim smo očistili naš glavni modul i nije naduvan sa različitim funkcijama. Kako pišemo više funkcija s klasama, stavljamo ih u odgovarajuće module. Modul treba da sadrži sve povezane funkcije i klase. Sada želimo da uvezemo modul pretvarača u naš modul aplikacije. Da biste to uradili, pišite import converters
na vrhu bez ekstenzije “.py”.
Možemo pristupiti članovima modula pomoću operatora tačke sličnog metodama.
Pretvorimo 70 kg u funte:
Postoji i druga sintaksa za uvoz modula. Umjesto uvoza cijelog modula, možemo uvesti određene funkcije iz tog modula. Možemo kucati from Converters import
i pritisnite “control + razmak za prikaz liste dostupnih funkcija. Sa ovim možemo direktno pozvati ovu funkciju.
vježba
Evo vaše vježbe.
Ovo se odnosi na vježbu sa predavanja gdje smo govorili o „za petlje” gdje smo napisali program za pronalaženje najvećeg broja sa liste
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 funkcije ili module i program je napisan u jednom fajlu. 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, pozovite je find_max
. Ova funkcija bi trebala uzeti listu i vratiti najveći broj na toj listi. Nakon toga nastavite i stavite ovu funkciju u poseban modul, izvucite je odavde i stavite je u modul pod nazivom utils
. Ovaj modul bi trebao sadržavati gomilu uslužnih funkcija. Uvezite utils
modul u trenutni modul i pozovite find_max
funkcija. Na kraju, dobijete rezultat i odštampajte ga na terminalu.
Ova vježba je malo izazovna, ali lako izvodljiva.
rastvor
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
Sačuvajte ovaj kod u datoteci “utils.py” kao modul.
Vratite se na naš glavni program, samo uvezite modul pomoću bilo koje od dvije sintakse i jednostavno izvršite logiku.
Jedna stvar na koju moram da vam skrenem pažnju je potkopavanje max
. Razlog tome je max
je ugrađena funkcija u Python-u 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. Postoji toliko mnogo modula koji su već ugrađeni u Python što znači da već postoji mnogo funkcionalnosti koje možemo ponovo koristiti. Možete pronaći ove module OVDJE.
paketi
Paketi su u osnovi još jedan način organiziranja našeg koda na vrhu modula. Pravi projekat može sadržavati stotine ili čak hiljade modula i vremenom će naš direktorij postati naduvan s toliko datoteka. Stoga je bolji pristup organizirati povezane module unutar paketa što paket čini spremnikom za više modula.
Novi direktorij se dodaje projektu i svi povezani moduli se dodaju u taj direktorij. Kao primjer, zamislite tržni centar. U tržnom centru postoje različiti dijelovi za mušku, žensku i dječju odjeću koji su poput paketa. Svaki odjeljak ima različita područja za različite vrste proizvoda kao što su cipele, majice i jakne. Zamislite ih kao module.
Hajde da vidimo kako kreirati i koristiti pakete u Pythonu.
Prvo dodajte novi direktorij s projektne ploče. Nazovimo to “eCommerce”. Ovaj paket će sadržavati sve module koji se odnose na aplikaciju za e-trgovinu.
To je još uvijek prazan direktorij i da bismo ga pretvorili u paket, potrebno je da u njemu kreiramo posebnu datoteku. Dodajte novu python datoteku u ovaj direktorij i nazovite tu datoteku “__init__”. To je posebna konvencija u Pythonu i kada Python interpretator vidi datoteku s ovim imenom u direktoriju, tretira ovaj direktorij kao paket.
Imamo i alternativnu i sažetu metodu za kreiranje paketa. Samo kliknite desnim tasterom miša na panel projekta i kreirajte Python paket sa liste. Nazovite ga “eCommerce” i to je to. Automatski će kreirati direktorij s Python datotekom pod nazivom “__init__”.
Sada, napravimo modul u paketu i nazovemo ga “shipping”. U ovom modulu napravimo jednostavnu funkciju za izračunavanje troškova dostave.
def calc_shipping():
print("calc_shipping")
Da bismo pristupili ovoj funkciji u našem glavnom modulu, moramo joj pristupiti preko paketa za e-trgovinu. Još jednom imamo dva načina za uvoz ovog modula.
U prvoj metodi možemo uvesti cijeli modul i zatim nezavisno pozvati funkciju ovako:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Međutim, s ovim pristupom, pozivanje jedne od funkcija u ovaj modul zahtijeva prefiks sa eCommerce.shipping.
To je veoma opširno. Dakle, kada radimo sa paketima često koristimo drugi pristup i koristimo se 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 redu koristeći zareze između njih. Recimo da postoji još jedna funkcija za obračun poreza u našem modulu za otpremu. To će biti uvezeno ovako:
from eCommerce.shipping import calc_shipping, calc_tax
Također možete uvesti pojedinačne module i ostaviti funkcije da budu pozvane u kasnijoj fazi programa. Hajde da uvezemo isporuku modula i onda koristimo dot operator da pozovemo funkciju calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Zamotati!
Paketi i moduli su izuzetno važni u Pythonu. Pogotovo kada želite da radite sa okvirom kao što je Django koji se koristi za izgradnju web aplikacije sa Pythonom. Pogledaćemo Django tokom drugog kursa Python-a.
Ovo je bilo posljednje konvencionalno predavanje u ovoj seriji. Sljedeće predavanje će odstupiti od našeg uobičajenog formata i naučit ćemo neke važne slučajeve upotrebe u Pythonu. To će označiti kraj ove serije i preći ćemo na našu sljedeću Python seriju. Ostanite sa nama zbog toga.
Ostavite odgovor