Innehållsförteckning[Dölj][Visa]
Den här föreläsningen kommer att sträcka sig över modulerna och paketen i Python.
De är ett sätt att organisera din kod i form av filer och är verkligen viktiga om du tänker bygga webbapplikationer med Python
Moduler
En modul i Python är i grunden en fil med någon python-kod som vi använder för att organisera vår kod i filer. Tänk på det som sektioner i en stormarknad. När du går till en stormarknad finns det olika sektioner för frukt, grönsaker, rengöringsprodukter etc. Du ser inte en avdelning med alla produkter.
Det är samma koncept inom programmering. Istället för att skriva all vår kod med alla funktioner och klasser i main.py, delar vi upp vår kod i flera filer. Varje fil kallas en modul. Med detta är inte bara vår kod bättre organiserad och strukturerad, utan vi har också möjligheten att återanvända vår kod. Låt oss se det genom ett exempel.
Låt oss definiera två funktioner för att konvertera vikt från pounds till kilogram och vice versa.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Nu kan vi ta dessa två funktioner och lägga dem i en separat modul som kallas "omvandlare", och sedan kan den importeras till vilket program som helst som behöver dessa omvandlarfunktioner. Låt mig visa dig hur du gör detta.
Låt oss öppna vår projektpanel och högerklicka på projektet och lägga till en ny fil. Vi kommer att kalla den här filen "Converters.py".
Kopiera nu koden från standardfilen och klistra in den i "Converters.py".
Med detta har vi rensat upp vår huvudmodul och den är inte uppsvälld med olika funktioner. När vi skriver fler funktioner med klasser lägger vi in dem i deras motsvarande moduler. En modul bör innehålla alla relaterade funktioner och klasser. Nu vill vi importera omvandlarmodulen till vår appmodul. För att göra detta, skriv import converters
på toppen utan tillägget ".py".
Vi kan komma åt medlemmarna i en modul genom att använda en punktoperator som liknar metoder.
Låt oss omvandla 70 kg till pund:
Det finns också en annan syntax för att importera moduler. Istället för att importera hela modulen kan vi importera specifika funktioner från den modulen. Vi kan skriva from Converters import
och tryck på "kontroll + mellanslag för att visa listan över tillgängliga funktioner. Med detta kan vi direkt anropa denna funktion.
Motionera
Här är din övning.
Detta är relaterat till en övning från föreläsningen där vi diskuterade ”för öglor” där vi skrev ett program för att ta reda på det största antalet från en lista
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Denna kod har för närvarande ingen organisation. Vi har inga funktioner eller moduler och programmet är skrivet i en enda fil. Det är okej för små program, men när dina program växer måste du organisera din kod ordentligt i klasser och moduler. Därför vill jag som en del av denna övning att du skriver en funktion, kalla den find_max
. Den här funktionen ska ta en lista och returnera det största antalet i den listan. Efter det fortsätt och lägg den här funktionen i en separat modul, extrahera den härifrån och lägg den i en modul som heter utils
. Den här modulen bör innehålla ett gäng verktygsfunktioner. Importera utils
modul till den aktuella modulen och ring find_max
fungera. Slutligen, få resultatet och skriv ut det på terminalen.
Den här övningen är lite utmanande men lätt genomförbar.
Lösning
Börja med att definiera en funktion find_max
och lägg till en parameter som kallas siffror. Inuti den här funktionen skriver du algoritmen för att hitta det största antalet i en lista.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Spara denna kod i filen "utils.py" som en modul.
Tillbaka till vårt huvudprogram, importera bara modulen med någon av de två syntaxerna och kör helt enkelt logiken.
En sak som jag måste uppmärksamma er är det undergrävda max
. Anledningen till det är max
är en inbyggd funktion i Python och vi omdefinierar den. Så detta är en varning från Python kompilator att vi inte längre kan använda max som dess inbyggda funktion.
Inbyggda moduler i Python
Python kommer med ett standardbibliotek som innehåller flera moduler för vanliga uppgifter som att skicka e-post, arbeta med datum och tid, generera slumpmässiga värden och lösenord och så vidare. Det finns så många moduler redan inbyggda i Python vilket betyder att det redan finns massor av funktionalitet som vi kan återanvända. Du kan hitta dessa moduler här..
Paket
Paket är i princip ett annat sätt att organisera vår kod ovanpå modulerna. Ett riktigt projekt kan innehålla hundratals eller till och med tusentals moduler och med tiden kommer vår katalog att bli uppsvälld med så många filer. Därför är ett bättre tillvägagångssätt att organisera relaterade moduler inuti ett paket, vilket gör paketet till en behållare för flera moduler.
En ny katalog läggs till i projektet och alla relaterade moduler läggs till i den katalogen. Som ett exempel, tänk på ett köpcentrum. Det finns olika sektioner för män, kvinnor och barnkläder i ett köpcentrum som är som paket. Varje sektion har olika områden för olika typer av produkter som skor, t-shirts och jackor. Se dessa som moduler.
Låt oss se hur man skapar och använder paket i Python.
Lägg först till en ny katalog från projektpanelen. Låt oss kalla det "e-handel". Detta paket kommer att innehålla alla moduler relaterade till en e-handelsapplikation.
Det är fortfarande en tom katalog och för att konvertera den till ett paket måste vi skapa en speciell fil i den. Lägg till en ny python-fil i den här katalogen och namnge filen "__init__". Det är en speciell konvention i Python och när Python-tolken ser en fil med detta namn i en katalog, behandlar den denna katalog som ett paket.
Vi har också en alternativ och kortfattad metod för att skapa ett paket. Högerklicka bara på projektpanelen och skapa ett Python-paket från listan. Döp det till "e-handel" och det är allt. Det kommer automatiskt att skapa en katalog med en Python-fil som heter "__init__".
Låt oss nu skapa en modul i paketet och döpa den till "frakt". Låt oss i den här modulen skapa en enkel funktion för att beräkna fraktkostnader.
def calc_shipping():
print("calc_shipping")
För att komma åt den här funktionen i vår huvudmodul måste vi komma åt den via e-handelspaketet. Återigen har vi två metoder för att importera denna modul.
I den första metoden kan vi importera hela modulen och sedan anropa en funktion oberoende så här:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Men med detta tillvägagångssätt kräver anrop av en av funktionerna till denna modul att den prefixeras med eCommerce.shipping.
Det är väldigt utförligt. Så när vi arbetar med paket använder vi ofta den andra metoden och använder from
uttalande.
from eCommerce.shipping import calc_shipping
calc_shipping()
Om du har flera funktioner i en modul kan du importera dem alla på en enda rad genom att använda kommatecken mellan dem. Låt oss säga att det finns en annan funktion för att beräkna skatt i vår fraktmodul. Det kommer att importeras så här:
from eCommerce.shipping import calc_shipping, calc_tax
Du kan också importera enskilda moduler och låta funktioner anropas i ett senare skede i programmet. Låt oss importera modulens frakt och sedan använda en punktoperator för att anropa funktionen calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Sammanfatta!
Paket och moduler är extremt viktiga i Python. Speciellt när du vill arbeta med ett ramverk som Django som används för att bygga webbapplikationer med Python. Vi kommer att titta på Django under en annan Python-kurs.
Detta var den sista konventionella föreläsningen i denna serie. Nästa föreläsning kommer att avvika från vårt vanliga format och vi kommer att lära oss några viktiga användningsfall i Python. Det kommer att markera slutet på den här serien och vi går vidare till vår nästa Python-serie. Håll utkik efter det.
Kommentera uppropet