Python-paket: Hur skapar och importerar jag dem?

I den här artikeln lär du dig att dela upp din kodbas i rena, effektiva moduler med Python-paket. Du lär dig också att importera och använda dina egna eller tredjepartspaket i ditt Python-program.

Video: Python-paket: Organisera din kod

Vad är paket?

Vi lagrar vanligtvis inte alla våra filer på vår dator på samma plats. Vi använder en välorganiserad kataloghierarki för enklare åtkomst.

Liknande filer förvaras i samma katalog, till exempel kan vi behålla alla låtar i " musik " -katalogen. Analogt med detta har Python paket för kataloger och moduler för filer.

Eftersom vårt applikationsprogram blir större i storlek med många moduler placerar vi liknande moduler i ett paket och olika moduler i olika paket. Detta gör ett projekt (program) enkelt att hantera och konceptuellt tydligt.

På samma sätt, eftersom en katalog kan innehålla underkataloger och filer, kan ett Python-paket ha underpaket och moduler.

En katalog måste innehålla en fil med namnet __init__.pyför att Python ska kunna betrakta den som ett paket. Den här filen kan lämnas tom men vi lägger vanligtvis initialiseringskoden för det paketet i den här filen.

Här är ett exempel. Antag att vi utvecklar ett spel. En möjlig organisering av paket och moduler kan vara som visas i figuren nedan.

Paketmodulstruktur i Python-programmering

Importerar modul från ett paket

Vi kan importera moduler från paket med dot (.) -Operatören.

Om vi ​​till exempel vill importera startmodulen i exemplet ovan kan det göras enligt följande:

 import Game.Level.start

Om den här modulen nu innehåller en funktion med namnet select_difficulty()måste vi använda hela namnet för att referera till den.

 Game.Level.start.select_difficulty(2)

Om denna konstruktion verkar lång kan vi importera modulen utan paketprefixet enligt följande:

 from Game.Level import start

Vi kan nu kalla funktionen helt enkelt enligt följande:

 start.select_difficulty(2)

Ett annat sätt att bara importera den nödvändiga funktionen (eller klass eller variabel) från en modul i ett paket skulle vara följande:

 from Game.Level.start import select_difficulty

Nu kan vi direkt kalla den här funktionen.

 select_difficulty(2)

Även om det är lättare rekommenderas inte denna metod. Användning av hela namnområdet undviker förvirring och förhindrar att två samma identifieringsnamn kolliderar.

När du importerar paket ser Python i listan över kataloger som definierats i sys.path, liknande för sökväg till modul.

Intressanta artiklar...