Python-pakketten: hoe maak en importeer je ze?

In dit artikel leert u uw codebasis op te splitsen in schone, efficiënte modules met behulp van Python-pakketten. U leert ook hoe u uw eigen pakketten of pakketten van derden in uw Python-programma kunt importeren en gebruiken.

Video: Python-pakketten: organiseer uw code

Wat zijn pakketten?

We slaan gewoonlijk niet al onze bestanden op onze computer op dezelfde locatie op. We gebruiken een goed georganiseerde hiërarchie van mappen voor eenvoudigere toegang.

Vergelijkbare bestanden worden in dezelfde map bewaard, we kunnen bijvoorbeeld alle nummers in de map " muziek " bewaren . Analoog hieraan heeft Python pakketten voor mappen en modules voor bestanden.

Omdat ons applicatieprogramma groter wordt in omvang met veel modules, plaatsen we vergelijkbare modules in één pakket en verschillende modules in verschillende pakketten. Dit maakt een project (programma) eenvoudig te managen en conceptueel helder.

Evenzo, aangezien een map submappen en bestanden kan bevatten, kan een Python-pakket subpakketten en modules hebben.

Een map moet een bestand met de naam bevatten, __init__.pyzodat Python het als een pakket kan beschouwen. Dit bestand kan leeg worden gelaten, maar we plaatsen doorgaans de initialisatiecode voor dat pakket in dit bestand.

Hier is een voorbeeld. Stel dat we een spel aan het ontwikkelen zijn. Een mogelijke organisatie van pakketten en modules zou kunnen zijn zoals weergegeven in de onderstaande afbeelding.

Pakketmodule-structuur in Python-programmering

Module importeren uit een pakket

We kunnen modules uit pakketten importeren met behulp van de puntoperator (.).

Als we bijvoorbeeld de startmodule in het bovenstaande voorbeeld willen importeren , kan dit als volgt worden gedaan:

 import Game.Level.start

Als deze module een functie bevat met de naam select_difficulty(), moeten we de volledige naam gebruiken om ernaar te verwijzen.

 Game.Level.start.select_difficulty(2)

Als deze constructie lang lijkt, kunnen we de module als volgt importeren zonder het pakketprefix:

 from Game.Level import start

We kunnen de functie nu eenvoudig als volgt aanroepen:

 start.select_difficulty(2)

Een andere manier om alleen de vereiste functie (of klasse of variabele) uit een module binnen een pakket te importeren, is als volgt:

 from Game.Level.start import select_difficulty

Nu kunnen we deze functie direct aanroepen.

 select_difficulty(2)

Hoewel eenvoudiger, wordt deze methode niet aanbevolen. Het gebruik van de volledige naamruimte voorkomt verwarring en voorkomt dat twee dezelfde identificatienamen met elkaar botsen.

Tijdens het importeren van pakketten zoekt Python in de lijst met gedefinieerde mappen sys.path, vergelijkbaar met het zoekpad van de module.

Interessante artikelen...