Python Academy · Lezione

Package e __init__.py

Organizzi i moduli in package con una struttura di directory adeguata.

Lezione 3 di 413 passaggi

Package e __init__.py è una lezione Python Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Python Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Python Academy include 4 lezioni in totale.

Che cos'è un package?

Un package è una directory che contiene un file __init__.py e uno o più moduli. Python considera ogni directory di questo tipo un package da cui è possibile importare elementi.

mypackage/
    __init__.py
    utils.py
    math_helpers.py

Il file __init__.py

__init__.py viene eseguito quando il package viene importato. Può essere vuoto oppure esporre nomi selezionati ai chiamanti.

# mypackage/__init__.py
from .utils import helper
from .math_helpers import add

Importare da un package

Utilizzi la notazione con il punto per importare sottomoduli o nomi definiti in __init__.py.

import mypackage
from mypackage import helper
from mypackage.math_helpers import add
print(add(2, 3))

Sottopackage

I package possono essere annidati: una sottodirectory con il proprio __init__.py diventa un sottopackage.

mypackage/
    __init__.py
    network/
        __init__.py
        http.py

Import relativi

All'interno di un package, utilizzi gli import relativi con un punto iniziale per fare riferimento ai moduli dello stesso livello senza codificare il nome del package.

# mypackage/network/http.py
from ..utils import helper   # two levels up

Import assoluti e relativi

Gli import assoluti non sono ambigui e sono preferibili. Gli import relativi sono utili all'interno di package di grandi dimensioni per evitare nomi molto lunghi.

# Absolute
from mypackage.utils import helper

# Relative (inside mypackage)
from .utils import helper

__all__ in __init__.py

Definisca __all__ per controllare ciò che from package import * esporta.

# mypackage/__init__.py
__all__ = ['helper', 'add']
from .utils import helper
from .math_helpers import add

Namespace package (PEP 420)

Python 3.3+ supporta i namespace package — directory senza __init__.py. Sono utili per suddividere un package tra più directory.

# No __init__.py needed
# Just have the directory and import normally
import myns.module

Inizializzazione di __init__ del package

Utilizzi __init__.py per definire costanti a livello di package, configurare il logging o caricare in modo lazy i sottomoduli pesanti.

# mypackage/__init__.py
import logging
logging.getLogger(__name__).addHandler(logging.NullHandler())
VERSION = '1.0.0'

Distribuire i package

Aggiunga un file pyproject.toml o setup.py per rendere il package installabile con pip.

# pyproject.toml excerpt
[project]
name = "mypackage"
version = "1.0.0"

# Install locally
# pip install -e .

Ispezionare gli attributi di un package

Utilizzi __file__, __path__ e __name__ per esaminare i metadati del package durante l'esecuzione.

import mypackage
print(mypackage.__file__)   # path to __init__.py
print(mypackage.__path__)   # list of directory paths
print(mypackage.__name__)   # 'mypackage'

Verifica rapida

Quale file rende una directory un package Python?

Riepilogo

I package organizzano i moduli in directory utilizzando __init__.py. Utilizzi gli import assoluti per maggiore chiarezza, gli import relativi all'interno di un package e __all__ per controllare le API pubbliche.

Gratis per iniziare

Impara Python con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
76
Lezioni
320

Domande Frequenti

La lezione «Package e __init__.py» è gratuita?

Sì — il testo completo di «Package e __init__.py» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Python Academy, passa a CoddyKit PRO. Il corso Python Academy include 4 lezioni in totale.

Cosa imparerò in «Package e __init__.py»?

Organizzi i moduli in package con una struttura di directory adeguata. Eserciti Python Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Python Academy?

Non è richiesta alcuna esperienza precedente. Python Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Package e __init__.py»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Python Academy?

Sì. Ogni lezione Python Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Creazione e importazione dei moduli
  2. La libreria standard di Python
  3. Package e __init__.py
  4. Installazione dei package con pip
← Torna a Python Academy