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__.py
fö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.
![](https://cdn.wiki-base.com/2810373/python_packages_how_to_create_and_import_them_.jpg.webp)
Importerar modul från ett paket
Vi kan importera moduler från paket med dot (.) -Operatören.
Om vi till exempel vill importera start
modulen 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.