Pythoni paketid: kuidas neid luua ja importida?

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.

Pakettmooduli struktuur Pythoni programmeerimises

Mooduli importimine paketist

Mooduleid saab pakettidest importida, kasutades operaator dot (.).

Näiteks kui soovime startmoodulit ü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.pathsarnaselt mooduli otsinguteele.

Huvitavad Artiklid...