Python-paketit: Kuinka luoda ja tuoda niitä?

Tässä artikkelissa opit jakamaan koodipohjan puhtaiksi, tehokkaiksi moduuleiksi käyttämällä Python-paketteja. Opit myös tuomaan ja käyttämään omia tai kolmannen osapuolen paketteja Python-ohjelmassa.

Video: Python-paketit: Järjestä koodisi

Mitä paketit ovat?

Emme yleensä säilytä kaikkia tiedostojamme tietokoneellamme samassa paikassa. Käytämme hyvin järjestettyä hakemistojen hierarkiaa pääsyn helpottamiseksi.

Samanlaisia ​​tiedostoja pidetään samassa hakemistossa, esimerkiksi voimme pitää kaikki kappaleet " musiikki " -hakemistossa. Tämän vastaavalla tavalla Pythonilla on paketteja hakemistoille ja moduuleja tiedostoille.

Kun sovellusohjelmamme kasvaa suuremmaksi ja siinä on paljon moduuleja, sijoitamme samanlaiset moduulit yhteen pakettiin ja erilaiset moduulit eri paketteihin. Tämä tekee projektista (ohjelmasta) helposti hallittavan ja käsitteellisesti selkeän.

Vastaavasti, koska hakemisto voi sisältää alihakemistoja ja tiedostoja, Python-paketissa voi olla alipaketteja ja moduuleja.

Hakemistossa on oltava nimetty tiedosto __init__.py, jotta Python voi pitää sitä pakettina. Tämä tiedosto voidaan jättää tyhjäksi, mutta yleensä sijoitamme kyseisen paketin alustuskoodin tähän tiedostoon.

Tässä on esimerkki. Oletetaan, että kehitämme peliä. Yksi mahdollinen pakettien ja moduulien järjestely voisi olla alla olevan kuvan mukainen.

Pakettimoduulirakenne Python-ohjelmoinnissa

Tuodaan moduuli paketista

Voimme tuoda moduuleja paketeista piste (.) -Operaattorin avulla.

Esimerkiksi, jos haluamme tuoda startmoduulin yllä olevassa esimerkissä, se voidaan tehdä seuraavasti:

 import Game.Level.start

Jos tämä moduuli sisältää funktion nimeltä select_difficulty(), meidän on käytettävä koko nimeä viittaamaan siihen.

 Game.Level.start.select_difficulty(2)

Jos tämä rakenne näyttää pitkältä, voimme tuoda moduulin ilman paketin etuliitettä seuraavasti:

 from Game.Level import start

Voimme nyt kutsua funktiota yksinkertaisesti seuraavasti:

 start.select_difficulty(2)

Toinen tapa tuoda vain vaadittu funktio (tai luokka tai muuttuja) paketin moduulista olisi seuraava:

 from Game.Level.start import select_difficulty

Nyt voimme kutsua tätä toimintoa suoraan.

 select_difficulty(2)

Vaikka tämä menetelmä on helpompaa, sitä ei suositella. Koko nimiavaruuden käyttäminen välttää sekaannusta ja estää kahden saman tunnistenimen törmäämisen.

Pakettien tuonnin aikana Python etsii hakemistossa määriteltyjen hakemistojen luetteloa sys.pathsamalla tavalla kuin moduulin hakupolulla.

Mielenkiintoisia artikkeleita...