Sisällysluettelo[Piilottaa][Näytä]
Tämä luento kattaa Pythonin moduulit ja paketit.
Ne ovat tapa järjestää koodisi tiedostojen muodossa ja ovat todella tärkeitä, jos aiot rakentaa verkkosovelluksia Pythonilla
Moduulit
Pythonin moduuli on pohjimmiltaan tiedosto, jossa on python-koodia, jota käytämme koodimme järjestämiseen tiedostoiksi. Ajattele sitä kuin supermarketin osia. Kun menet supermarkettiin, siellä on eri osioita hedelmille, vihanneksille, puhdistusaineille jne. Et näe yhtä osiota kaikista tuotteista.
Se on sama käsite ohjelmoinnissa. Sen sijaan, että kirjoittaisimme kaiken koodimme kaikilla funktioilla ja luokilla main.py:hen, jaamme koodimme useiksi tiedostoiksi. Jokaista tiedostoa kutsutaan moduuliksi. Tämän ansiosta koodimme ei ole vain paremmin järjestetty ja jäsennelty, vaan meillä on myös mahdollisuus käyttää koodiamme uudelleen. Katsotaanpa sitä esimerkin kautta.
Määritellään kaksi funktiota painon muuntamiseksi punnista kilogrammoiksi ja päinvastoin.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Nyt voimme ottaa nämä kaksi funktiota ja laittaa ne erilliseen moduuliin nimeltä "muuntimet", ja sitten se voidaan tuoda mihin tahansa ohjelmaan, joka tarvitsee näitä muuntimen toimintoja. Anna minun näyttää sinulle, kuinka tämä tehdään.
Avataan projektipaneelimme ja napsauta hiiren kakkospainikkeella projektia ja lisää uusi tiedosto. Kutsumme tätä tiedostoa nimellä "Converters.py".
Kopioi nyt koodi oletustiedostosta ja liitä se Converters.py-tiedostoon.
Tällä olemme puhdistaneet päämoduulimme, eikä se ole paisutettu eri toiminnoista. Kun kirjoitamme lisää toimintoja luokilla, laitamme ne vastaaviin moduuleihin. Moduulin tulee sisältää kaikki siihen liittyvät funktiot ja luokat. Nyt haluamme tuoda muuntajamoduulin sovellusmoduuliimme. Voit tehdä tämän kirjoittamalla import converters
yläreunassa ilman päätettä ".py".
Moduulin jäseniin pääsee käsiksi menetelmien kaltaisella pisteoperaattorilla.
Muunnetaan 70 kg pudoiksi:
Moduulien tuontia varten on myös toinen syntaksi. Sen sijaan, että tuomme koko moduulin, voimme tuoda tiettyjä toimintoja kyseisestä moduulista. Osaamme kirjoittaa from Converters import
ja paina "Ctrl + välilyönti näyttääksesi luettelon käytettävissä olevista toiminnoista. Tämän avulla voimme kutsua tätä funktiota suoraan.
Käyttää
Tässä on harjoituksesi.
Tämä liittyy harjoitukseen luennosta, jossa keskustelimme "silmukoita varten”, jossa kirjoitimme ohjelman löytääksemme suurimman luvun luettelosta
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Tällä koodilla ei tällä hetkellä ole organisaatiota. Meillä ei ole toimintoja tai moduuleja ja ohjelma on kirjoitettu yhteen tiedostoon. Tämä on okei pienille ohjelmille, mutta kun ohjelmasi kasvavat, sinun on järjestettävä koodisi oikein luokkiin ja moduuleihin. Siksi osana tätä harjoitusta haluan sinun kirjoittavan funktion, kutsuvan sitä find_max
. Tämän funktion pitäisi ottaa luettelo ja palauttaa luettelon suurin numero. Sen jälkeen siirry eteenpäin ja laita tämä toiminto erilliseen moduuliin, pura se täältä ja laita se moduuliin nimeltä utils
. Tämän moduulin pitäisi sisältää joukko aputoimintoja. Tuo utils
moduuli nykyiseen moduuliin ja soita find_max
toiminto. Lopuksi hanki tulos ja tulosta se terminaaliin.
Tämä harjoitus on hieman haastava, mutta helposti suoritettavissa.
Ratkaisu
Aloita määrittämällä funktio find_max
ja lisää parametri nimeltä numerot. Kirjoita tähän funktioon algoritmi luettelon suurimman luvun löytämiseksi.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Tallenna tämä koodi tiedostoon "utils.py" moduulina.
Palaa pääohjelmaamme, tuo moduuli jommallakummalla syntaksilla ja suorita logiikka.
Yksi asia, johon minun on kiinnitettävä huomiosi, on heikentynyt max
. Syynä siihen on max
on Pythonin sisäänrakennettu toiminto, ja määrittelemme sen uudelleen. Tämä on siis varoitus Python-kääntäjä että emme voi enää käyttää maxia sen sisäänrakennetun funktiona.
Pythonissa sisäänrakennetut moduulit
Pythonissa on vakiokirjasto, joka sisältää useita moduuleja yleisiin tehtäviin, kuten sähköpostien lähettämiseen, päivämäärän ja kellonajan käsittelyyn, satunnaisten arvojen ja salasanojen luomiseen ja niin edelleen. Pythonissa on jo valmiiksi sisäänrakennettuja moduuleja, mikä tarkoittaa, että meillä on jo paljon toimintoja, joita voimme käyttää uudelleen. Löydät nämä moduulit tätä.
Jäsenyydet
Paketit ovat periaatteessa toinen tapa järjestää koodimme moduulien päälle. Todellinen projekti voi sisältää satoja tai jopa tuhansia moduuleja, ja ajan myötä hakemistomme täyttyy niin monista tiedostoista. Siksi parempi lähestymistapa on järjestää toisiinsa liittyvät moduulit paketin sisään, mikä tekee paketista säiliön useille moduuleille.
Projektiin lisätään uusi hakemisto ja kaikki siihen liittyvät moduulit lisätään tähän hakemistoon. Ajattele esimerkiksi ostoskeskusta. Kauppakeskuksessa on eri osastot miesten, naisten ja lasten vaatteille, jotka ovat kuin paketteja. Jokaisessa osiossa on eri alueet erilaisille tuotteille, kuten kengille, t-paidille ja takeille. Ajattele näitä moduuleina.
Katsotaanpa, kuinka paketteja luodaan ja käytetään Pythonissa.
Lisää ensin uusi hakemisto projektipaneelista. Kutsutaan sitä "eCommerce". Tämä paketti sisältää kaikki verkkokauppasovellukseen liittyvät moduulit.
Se on edelleen tyhjä hakemisto ja muuntaaksesi sen paketiksi meidän on luotava siihen erityinen tiedosto. Lisää uusi python-tiedosto tähän hakemistoon ja nimeä tiedosto "__init__". Se on Pythonissa erityinen käytäntö, ja kun Python-tulkki näkee tämännimisen tiedoston hakemistossa, se käsittelee tätä hakemistoa pakettina.
Meillä on myös vaihtoehtoinen ja ytimekäs tapa luoda paketti. Napsauta hiiren kakkospainikkeella projektipaneelia ja luo Python-paketti luettelosta. Nimeä se "eCommerce" ja siinä se. Se luo automaattisesti hakemiston Python-tiedostolla nimeltä "__init__".
Luodaan nyt pakettiin moduuli ja nimetään se "lähetys". Tässä moduulissa luodaan yksinkertainen funktio toimituskulujen laskemiseen.
def calc_shipping():
print("calc_shipping")
Päästäksemme tähän toimintoon päämoduulissamme, meidän on käytettävä sitä verkkokauppapaketin kautta. Jälleen kerran meillä on kaksi tapaa tuoda tämä moduuli.
Ensimmäisessä menetelmässä voimme tuoda koko moduulin ja kutsua sitten funktiota itsenäisesti seuraavasti:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Kuitenkin tällä lähestymistavalla yhden funktion kutsuminen tähän moduuliin vaatii sen etuliitteen eCommerce.shipping.
Se on hyvin monisanaista. Joten, kun työskentelemme pakettien kanssa, käytämme usein toista lähestymistapaa ja käytämme from
lausuma.
from eCommerce.shipping import calc_shipping
calc_shipping()
Jos sinulla on useita toimintoja yhdessä moduulissa, voit tuoda ne kaikki yhdelle riville käyttämällä pilkkuja niiden välissä. Oletetaan, että toimitusmoduulissamme on toinen toiminto verojen laskemiseen. Se tuodaan näin:
from eCommerce.shipping import calc_shipping, calc_tax
Voit myös tuoda yksittäisiä moduuleja ja jättää toimintoja kutsuttavaksi myöhemmässä vaiheessa ohjelmaa. Tuodaan moduulin toimitus ja kutsutaan sitten funktio pisteoperaattorilla calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Paketoida!
Paketit ja moduulit ovat erittäin tärkeitä Pythonissa. Varsinkin kun haluat työskennellä Djangon kaltaisen kehyksen kanssa, jota käytetään rakentamiseen web-sovellukset Pythonin kanssa. Tutustumme Djangoon toisen Python-kurssin aikana.
Tämä oli tämän sarjan viimeinen perinteinen luento. Seuraava luento poikkeaa tavallisesta formaatistamme ja opimme tärkeitä käyttötapauksia Pythonissa. Tämä merkitsee tämän sarjan loppua ja siirrymme seuraavaan Python-sarjaamme. Pysy kuulolla.
Jätä vastaus