
Regular Package in Python
Un "Regular Package" in Python è fondamentalmente una cartella che contiene un file speciale chiamato "__init__.py" e una collezione di moduli con estensione .py organizzati in una directory gerarchica.
Il file "__init__.py" può essere vuoto, ma la sua presenza indica a Python che quella cartella contiene un pacchetto di moduli Python ovvero è un package.
Questo è il modo in cui Python organizza i moduli in spazi dei nomi gerarchici, permettendo così una struttura del codice più ordinata e modulare.
A cosa serve? Immagina di avere una serie di funzioni, classi o variabili correlate che vuoi raggruppare insieme. Invece di metterle tutte in un unico file, che potrebbe diventare molto lungo e difficile da gestire, le separi in moduli o script Python distinti. Questi moduli possono essere poi raggruppati in un pacchetto.
Ecco un esempio pratico.
Supponiamo di voler creare un pacchetto chiamato "animali" che contenga moduli separati per differenti tipi di animali, come "cani" e "gatti".
La struttura delle cartelle e dei file potrebbe essere questa:
animali/
│ __init__.py
│
├── cani/
│ ├── __init__.py
│ ├── pitbull.py
│ └── bulldog.py
│
└── gatti/
├── __init__.py
├── persiano.py
└── siamese.py
In questo caso la cartella "animali" è il pacchetto principale.
All'interno di `animali`, abbiamo due sottopacchetti: "cani" e "gatti".
Ogni sottopacchetto ha il proprio file "__init__.py", che può essere utilizzato per eseguire codice di inizializzazione per il pacchetto o per definire quale contenuto del pacchetto è esportabile.
Infine, i file `pitbull.py`, `bulldog.py`, `persiano.py`, e `siamese.py` sono moduli che contengono funzioni, classi e variabili specifiche per ogni tipo di animale.
Come si usa?
Per utilizzare le classi o le funzioni definite in uno dei nostri moduli, devi prima importarle.
Ecco come puoi farlo:
from animali.cani.pitbull import Pitbull
from animali.gatti.persiano import Persiano
In questo esempio hai importato la classe `Pitbull` dal modulo `pitbull.py` che si trova nel sottopacchetto `cani` e la classe `Persiano` dal modulo `persiano.py` che si trova nel sottopacchetto `gatti`.
Una volta importate, puoi creare le istanze di queste classi.
mio_pitbull = Pitbull("Rex")
mio_persiano = Persiano("Fluffy")
Perché è utile?
Utilizzare pacchetti regolari in Python ti aiuta a mantenere il codice organizzato e a separare logicamente parti differenti di un progetto.
Questo non solo rende il codice più leggibile e mantenibile ma facilita anche la collaborazione tra sviluppatori, poiché ognuno può lavorare su moduli o pacchetti specifici senza interferire troppo con il lavoro degli altri.