Suggerimenti sul tipo Python: digitazione statica e annotazioni

Scopri come scrivere suggerimenti sul tipo in Python. Migliora la qualità del codice, abilita il completamento automatico e sfrutta mypy per l'analisi statica del codice.

Prova nell'editor

Panoramica

Python è storicamente un linguaggio tipizzato dinamicamente, il che significa che l'interprete deduce tipi variabili in fase di esecuzione, offrendo agli sviluppatori velocità e flessibilità. Tuttavia, man mano che le basi di codice crescono, questa flessibilità tipizzata dinamicamente può portare a confusi bug di runtime, come il passaggio di un elenco a una funzione che prevede una stringa. Per colmare questa lacuna,Python 3.5 ha introdotto i suggerimenti sui tipi (annotazioni sui tipi), consentendo agli sviluppatori di documentare esplicitamente i tipi previsti nel codice.

I suggerimenti sul tipo non influenzano il modo in cui Python esegue il codice; l'interprete li ignora completamente in fase di esecuzione. Il loro valore risiede invece nell'analisi statica e negli strumenti IDE. Aggiungendo annotazioni di tipo a variabili, parametri di funzione e tipi restituiti, il tuo IDE può fornire un completamento automatico preciso e contrassegnare immediatamente errori di mancata corrispondenza del tipo. Strumenti come "mypy" possono scansionare la tua codebase prima della distribuzione per individuare i bug in modo statico, imitando i controlli in fase di compilazione di linguaggi come TypeScript o Java.

Le capacità di digitazione di Python sono estese. Puoi annotare tipi di base come `str`, `int` e `bool` oppure utilizzare tipi avanzati dal modulo integrato `typing` (o raccolte standard inPython 3.9+) come `list[str]`, `dict[str, int]` e `tuple[float, float]`. Funzionalità come "Union" (o l'operatore pipe "|" inPython 3.10+) consentono ai parametri di accettare più tipi, mentre "Optional[T]" rappresenta un valore che può essere un tipo specifico o "None". L'implementazione dei suggerimenti sul tipo migliora notevolmente la leggibilità e la collaborazione del team.

Codice e output di esecuzione

Scrivere una funzione con annotazioni di tipo e controllare come accetta input.

typing_demo.py
Prova nell'editor
# Type annotations for function parameters and return values
def greeting(name: str, count: int) -> str:
    return f"Hello {name}! " * count

# Type hints on standard collections (Python 3.9+)
user_roles: dict[str, str] = {
    "admin": "Alice",
    "moderator": "Bob"
}

message = greeting("Jane", 2)
print(message)
print(f"Roles configured: {user_roles}")
Uscita terminale
Hello Jane! Hello Jane! 
Roles configured: {'admin': 'Alice', 'moderator': 'Bob'}

Implementazione passo dopo passo

  • Prevenire i bug di integrazione nelle codebase di team di grandi dimensioni
  • Abilitazione del completamento del codice IDE in progetti di codice complessi
  • Generazione di strutture API autodocumentanti e schemi di convalida

Domande frequenti

I suggerimenti sul tipo applicano l'indipendenza dai tipi in fase di esecuzione?

No. Python non genera eccezioni di errore se passi un tipo diverso dal suggerimento annotato. Per applicare il controllo del tipo, è necessario eseguire controlli statici come mypy.

Qual è la differenza tra Any e Union?

Qualsiasi disabilita il controllo del tipo per una variabile, consentendole di contenere qualsiasi cosa. Union (o T | U) limita la variabile a un sottoinsieme di tipi specifico e definito.

Argomenti correlati

Risorse Python consigliate

Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.