Această prelegere va cuprinde modulele și pachetele din Python.
Sunt o modalitate de a vă organiza codul sub formă de fișiere și sunt cu adevărat importante dacă intenționați să construiți aplicații web cu Python
Module
Un modul în Python este practic un fișier cu un cod Python pe care îl folosim pentru a ne organiza codul în fișiere. Gândește-te la asta ca la secțiuni într-un supermarket. Când mergi la un supermarket există diferite secțiuni pentru fructe, legume, produse de curățare etc. Nu vezi o secțiune cu toate produsele.
Este același concept în programare. În loc să scriem tot codul nostru cu toate funcțiile și clasele în main.py, împărțim codul nostru în mai multe fișiere. Fiecare fișier este denumit modul. Prin aceasta, nu numai că codul nostru este mai bine organizat și structurat, dar avem și capacitatea de a ne reutiliza codul. Să vedem printr-un exemplu.
Să definim două funcții pentru conversia greutății din lire în kilograme și invers.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Acum, putem lua aceste două funcții și le punem într-un modul separat numit „convertoare”, apoi pot fi importate în orice program care are nevoie de aceste funcții de conversie. Lasă-mă să-ți arăt cum să faci asta.
Să deschidem panoul nostru de proiecte și să facem clic dreapta pe proiect și să adăugăm un fișier nou. Vom numi acest fișier „Converters.py”.
Acum copiați codul din fișierul implicit și inserați-l în „Converters.py”.
Cu aceasta, ne-am curățat modulul principal și nu este umflat cu diferite funcții. Pe măsură ce scriem mai multe funcții cu clase, le punem în modulele corespunzătoare. Un modul ar trebui să conțină toate funcțiile și clasele aferente. Acum, vrem să importăm modulul convertoare în modulul nostru de aplicație. Pentru a face acest lucru, scrieți import converters
în partea de sus fără extensia „.py”.
Putem accesa membrii unui modul folosind un operator punct similar metodelor.
Să transformăm 70 kg în lire:
Există și o altă sintaxă pentru importarea modulelor. În loc să importam întregul modul, putem importa anumite funcții din acel modul. Putem tasta from Converters import
și apăsați „control + spațiu pentru a afișa lista de funcții disponibile. Cu aceasta, putem apela direct această funcție.
Exercita
Iată exercițiul tău.
Acesta este legat de un exercițiu din prelegere în care am discutat despre „pentru bucle” unde am scris un program pentru a afla cel mai mare număr dintr-o listă
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Acest cod nu are în prezent nicio organizație. Nu avem funcții sau module și programul este scris într-un singur fișier. Este în regulă pentru programele mici, dar pe măsură ce programele tale cresc, trebuie să-ți organizezi corect codul în clase și module. Prin urmare, ca parte a acestui exercițiu, vreau să scrieți o funcție, numiți-o find_max
. Această funcție ar trebui să ia o listă și să returneze cel mai mare număr din acea listă. După aceea, mergeți mai departe și puneți această funcție într-un modul separat, extrageți-o de aici și puneți-o într-un modul numit utils
. Acest modul ar trebui să conțină o mulțime de funcții utilitare. Importă utils
modul în modulul curent și apelați find_max
funcţie. În cele din urmă, obțineți rezultatul și imprimați-l pe terminal.
Acest exercițiu este puțin provocator, dar ușor de realizat.
Soluţie
Începeți prin a defini o funcție find_max
și adăugați un parametru numit numere. În această funcție, scrieți algoritmul pentru găsirea celui mai mare număr dintr-o listă.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Salvați acest cod într-un fișier „utils.py” ca modul.
Înapoi la programul nostru principal, doar importați modulul prin oricare dintre cele două sintaxe și pur și simplu executați logica.
Un lucru asupra căruia trebuie să vă atrag atenția este subminat max
. Motivul pentru asta este max
este o funcție încorporată în Python și o redefinim. Deci acesta este un avertisment din partea Compilatorul Python că nu mai putem folosi max ca funcție încorporată.
Module încorporate în Python
Python vine cu o bibliotecă standard care conține mai multe module pentru sarcini comune, cum ar fi trimiterea de e-mailuri, lucrul cu data și ora, generarea de valori și parole aleatoare și așa mai departe. Există atât de multe module deja încorporate în Python, ceea ce înseamnă că există deja o mulțime de funcționalități pe care le putem reutiliza. Puteți găsi aceste module aici.
Pachete
Pachetele sunt practic o altă modalitate de a ne organiza codul deasupra modulelor. Un proiect real poate conține sute sau chiar mii de module și, în timp, directorul nostru se va umfla cu atât de multe fișiere. Prin urmare, o abordare mai bună este organizarea modulelor asociate în interiorul unui pachet, ceea ce face din pachet un container pentru mai multe module.
Un director nou este adăugat la proiect și toate modulele aferente sunt adăugate la acel director. De exemplu, gândiți-vă la un mall. Există diferite secțiuni pentru îmbrăcăminte pentru bărbați, femei și copii într-un mall, care sunt ca pachetele. Fiecare secțiune are zone diferite pentru diferite tipuri de produse, cum ar fi pantofi, tricouri și jachete. Gândiți-vă la acestea ca la module.
Să vedem cum să creați și să utilizați pachete în Python.
Mai întâi, adăugați un director nou din panoul de proiect. Să-i spunem „eCommerce”. Acest pachet va conține toate modulele legate de o aplicație de comerț electronic.
Este încă un director gol și pentru a-l converti într-un pachet, trebuie să creăm un fișier special în el. Adăugați un nou fișier Python în acest director și denumiți acel fișier „__init__”. Este o convenție specială în Python și când interpretul Python vede un fișier cu acest nume într-un director, tratează acest director ca pe un pachet.
Avem, de asemenea, o metodă alternativă și concisă pentru a crea un pachet. Doar faceți clic dreapta pe panoul de proiect și creați un pachet Python din listă. Numiți-i „eCommerce” și atât. Acesta va crea automat un director cu un fișier Python numit „__init__”.
Acum, să creăm un modul în pachet și să-l numim „livrare”. În acest modul, să creăm o funcție simplă pentru calcularea costurilor de transport.
def calc_shipping():
print("calc_shipping")
Pentru a accesa această funcție în modulul nostru principal, trebuie să o accesăm prin pachetul de comerț electronic. Încă o dată avem două metode de a importa acest modul.
În prima metodă, putem importa întregul modul și apoi apelăm o funcție independent, astfel:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Cu toate acestea, cu această abordare, apelarea uneia dintre funcțiile acestui modul necesită prefixarea acesteia cu eCommerce.shipping.
Este foarte prolix. Deci, atunci când lucrăm cu pachete, folosim adesea a doua abordare și folosim from
afirmație.
from eCommerce.shipping import calc_shipping
calc_shipping()
Dacă aveți mai multe funcții într-un singur modul, le puteți importa pe toate într-o singură linie folosind virgulele între ele. Să presupunem că există o altă funcție pentru calcularea taxelor în modulul nostru de expediere. Acesta va fi importat astfel:
from eCommerce.shipping import calc_shipping, calc_tax
De asemenea, puteți importa module individuale și lăsați funcțiile să fie apelate într-o etapă ulterioară a programului. Să importăm livrarea modulului și apoi să folosim un operator punct pentru a apela funcția calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Învelire!
Pachetele și modulele sunt extrem de importante în Python. Mai ales, când doriți să lucrați cu un cadru precum Django, care este folosit pentru construirea aplicații web cu Python. Ne vom uita la Django în timpul unui alt curs Python.
Aceasta a fost ultima prelegere convențională din această serie. Următoarea prelegere se va abate de la formatul nostru obișnuit și vom afla câteva cazuri de utilizare importante în Python. Aceasta va marca sfârșitul acestei serii și vom trece la următoarea noastră serie Python. Rămâneți pe fază pentru asta.
Lasă un comentariu