Selles artiklis saate õppida oma koodibaasi puhasteks ja tõhusateks mooduliteks jagama, kasutades Pythoni pakette. Samuti õpite oma või kolmanda osapoole pakette oma Pythoni programmis importima ja kasutama.
Video: Pythoni paketid: korrastage oma kood
Mis on pakendid?
Tavaliselt ei salvesta me kõiki oma faile arvutisse samas kohas. Lihtsama juurdepääsu saamiseks kasutame kataloogide hierarhiat hästi korraldatud.
Sarnaseid faile hoitakse samas kataloogis, näiteks võime kõik laulud hoida kataloogis " muusika ". Analoogselt sellega on Pythonis kataloogide paketid ja failide moodulid.
Kuna meie rakendusprogramm kasvab koos paljude moodulitega suuremaks, paigutame sarnased moodulid ühte paketti ja erinevad moodulid erinevatesse pakettidesse. See muudab projekti (programmi) hõlpsasti hallatavaks ja kontseptuaalselt selgeks.
Samamoodi, kuna kataloog võib sisaldada alamkatalooge ja faile, võib Pythoni paketil olla alampakette ja mooduleid.
Kataloog peab sisaldama faili nimega __init__.py
, et Python saaks seda pidada paketiks. Selle faili võib tühjaks jätta, kuid tavaliselt paigutame sellesse paketti selle paketi lähtestuskoodi.
Siin on näide. Oletame, et arendame mängu. Pakettide ja moodulite üks võimalik korraldus võib olla selline, nagu on näidatud alloleval joonisel.

Mooduli importimine paketist
Mooduleid saab pakettidest importida, kasutades operaator dot (.).
Näiteks kui soovime start
moodulit ülaltoodud näites importida , saab seda teha järgmiselt:
import Game.Level.start
Kui see moodul sisaldab funktsiooni nimega select_difficulty()
, peame sellele viitamiseks kasutama täisnime.
Game.Level.start.select_difficulty(2)
Kui see konstruktsioon tundub pikk, saame mooduli importida ilma paketi eesliiteta järgmiselt:
from Game.Level import start
Nüüd saame funktsiooni kutsuda lihtsalt järgmiselt:
start.select_difficulty(2)
Teine võimalus lihtsalt vajaliku funktsiooni (või klassi või muutuja) importimiseks paketi moodulist oleks järgmine:
from Game.Level.start import select_difficulty
Nüüd saame seda funktsiooni otse kutsuda.
select_difficulty(2)
Kuigi see on lihtsam, pole seda meetodit soovitatav kasutada. Täisnimeruumi kasutamine väldib segadust ja takistab kahe sama identifikaatori nime kokkupõrget.
Pakettide importimise ajal otsib Python kataloogis määratletud kataloogide loendit sys.path
sarnaselt mooduli otsinguteele.