Python paketes: kā tās izveidot un importēt?

Šajā rakstā jūs uzzināsiet sadalīt kodu bāzi tīros, efektīvos moduļos, izmantojot Python paketes. Jūs arī iemācīsities importēt un izmantot savas vai trešās puses pakotnes savā Python programmā.

Video: Python paketes: kārtojiet kodu

Kas ir paketes?

Parasti mēs visus savus failus neglabājam datorā vienā un tajā pašā vietā. Lai ērtāk piekļūtu, mēs izmantojam labi organizētu direktoriju hierarhiju.

Līdzīgi faili tiek glabāti vienā direktorijā, piemēram, mēs varam saglabāt visas dziesmas direktorijā " mūzika ". Līdzīgi tam Python ir direktoriju paketes un failu moduļi.

Tā kā mūsu lietojumprogramma kļūst arvien lielāka un tajā ir daudz moduļu, mēs ievietojam līdzīgus moduļus vienā paketē un dažādus moduļus dažādās paketēs. Tas padara projektu (programmu) viegli vadāmu un konceptuāli skaidru.

Līdzīgi kā direktorijā var būt apakšdirektoriji un faili, Python pakotnei var būt apakšpaketes un moduļi.

Katalogā jābūt failam ar nosaukumu __init__.py, lai Python to uzskatītu par paketi. Šo failu var atstāt tukšu, taču mēs parasti ievietojam šīs pakotnes inicializācijas kodu šajā failā.

Šeit ir piemērs. Pieņemsim, ka mēs izstrādājam spēli. Viena iespējama pakotņu un moduļu organizēšana varētu būt tāda, kā parādīts attēlā zemāk.

Paku moduļu struktūra Python programmēšanā

Moduļa importēšana no pakotnes

Mēs varam importēt moduļus no pakotnēm, izmantojot punktu (.) Operatoru.

Piemēram, ja mēs vēlamies importēt startmoduli iepriekš minētajā piemērā, to var izdarīt šādi:

 import Game.Level.start

Ja šajā modulī ir funkcija ar nosaukumu select_difficulty(), mums ir jāizmanto pilns nosaukums, lai uz to atsauktos.

 Game.Level.start.select_difficulty(2)

Ja šķiet, ka šī konstrukcija ir gara, moduli var importēt bez pakotnes prefiksa šādi:

 from Game.Level import start

Tagad funkciju varam izsaukt šādi:

 start.select_difficulty(2)

Vēl viens veids, kā importēt tikai nepieciešamo funkciju (vai klasi vai mainīgo) no paketes moduļa, ir šāds:

 from Game.Level.start import select_difficulty

Tagad mēs varam tieši izsaukt šo funkciju.

 select_difficulty(2)

Lai gan šī metode ir vieglāka, šī metode nav ieteicama. Pilnas nosaukumvietas izmantošana ļauj izvairīties no neskaidrībām un novērš divu vienādu identifikatoru nosaukumu sadursmi.

Importējot paketes, Python meklē direktoriju sarakstu, kas definēts šeit sys.path, līdzīgi kā moduļu meklēšanas ceļam.

Interesanti raksti...