Pacchetti Python: come crearli e importarli?

In questo articolo imparerai a dividere la tua base di codice in moduli puliti ed efficienti usando i pacchetti Python. Inoltre, imparerai a importare e utilizzare pacchetti tuoi o di terze parti nel tuo programma Python.

Video: pacchetti Python: organizza il tuo codice

Cosa sono i pacchetti?

Di solito non archiviamo tutti i nostri file sul nostro computer nella stessa posizione. Usiamo una gerarchia di directory ben organizzata per un accesso più facile.

File simili sono conservati nella stessa directory, ad esempio, potremmo mantenere tutte le canzoni nella directory " music ". Analogamente a questo, Python ha pacchetti per directory e moduli per file.

Man mano che il nostro programma applicativo cresce di dimensioni con molti moduli, inseriamo moduli simili in un pacchetto e moduli diversi in pacchetti diversi. Questo rende un progetto (programma) facile da gestire e concettualmente chiaro.

Allo stesso modo, poiché una directory può contenere sottodirectory e file, un pacchetto Python può avere sotto-pacchetti e moduli.

Una directory deve contenere un file denominato __init__.pyaffinché Python la consideri come un pacchetto. Questo file può essere lasciato vuoto, ma generalmente inseriamo il codice di inizializzazione per quel pacchetto in questo file.

Ecco un esempio. Supponiamo di sviluppare un gioco. Una possibile organizzazione di pacchetti e moduli potrebbe essere quella mostrata nella figura seguente.

Struttura del modulo del pacchetto nella programmazione Python

Importazione di un modulo da un pacchetto

Possiamo importare moduli da pacchetti usando l'operatore punto (.).

Ad esempio, se vogliamo importare il startmodulo nell'esempio sopra, può essere fatto come segue:

 import Game.Level.start

Ora, se questo modulo contiene una funzione denominata select_difficulty(), dobbiamo utilizzare il nome completo per fare riferimento ad essa.

 Game.Level.start.select_difficulty(2)

Se questo costrutto sembra lungo, possiamo importare il modulo senza il prefisso del pacchetto come segue:

 from Game.Level import start

Ora possiamo chiamare la funzione semplicemente come segue:

 start.select_difficulty(2)

Un altro modo per importare solo la funzione richiesta (o classe o variabile) da un modulo all'interno di un pacchetto sarebbe il seguente:

 from Game.Level.start import select_difficulty

Ora possiamo chiamare direttamente questa funzione.

 select_difficulty(2)

Sebbene più semplice, questo metodo non è consigliato. L'utilizzo dello spazio dei nomi completo evita confusione e impedisce la collisione tra due nomi identici.

Durante l'importazione dei pacchetti, Python cerca nell'elenco delle directory definite in sys.path, in modo simile al percorso di ricerca del modulo.

Articoli interessanti...