Python è un linguaggio digitato dinamicamente e i suggerimenti di tipo non sono obbligatori. Python Interpreter identifica automaticamente i tipi di oggetti durante l'esecuzione del codice e consente anche agli oggetti di modificare dinamicamente i loro tipi durante la vita. Tuttavia, i suggerimenti di tipo opzionale sono stati introdotti in Python 3.5, consentendo ai programmatori di utilizzare i suggerimenti di tipo se lo desiderano.
Si noti che a differenza di altri linguaggi di programmazione, Python Interpreter stesso non applica i suggerimenti di tipo opzionale in quanto li considera solo suggerimenti. Dovrai utilizzare moduli di terze parti o plug -in editor di testo per imporre il controllo di tipo rigoroso in Python.
Perché utilizzare i suggerimenti di tipo?
Tipo suggerisce esplicitamente i tipi di oggetti e riducono l'ambiguità del codice. Rendono molto più facile dedurre la logica dietro le dichiarazioni del codice, specialmente quando la stessa base di codice viene elaborata da più membri di una squadra. Sono anche utili quando si accede a codebase dopo lunghi intervalli poiché i suggerimenti del tipo rendono più facile dedurre la logica sottostante. I suggerimenti del tipo possono rendere molto più semplice il debug del codice quando si verificano problemi e arresti anomali. Tuttavia aumentano la verbosità nel codice e ad alcuni sviluppatori potrebbe non piacere in quanto influisce sulla sintassi standard di Python che è molto più pulita. L'utilizzo dei suggerimenti di tipo nei programmi Python può anche essere una scelta personale basata sul proprio stile di codifica e motivi. Come affermato in precedenza, anche quando si utilizzano suggerimenti di tipo, l'interprete di Python non li applica e potrebbe essere necessario installare un modulo di terze parti per consentire il controllo del tipo rigoroso.
Sintassi di base e utilizzo
Il seguente esempio mostra i suggerimenti di tipo utilizzati per un tipo di tipo "int" in Python:
DEF Square (Numero: int) -> int:La prima istruzione definisce una funzione chiamata "Square". Impiega un argomento obbligatorio chiamato "numero" e calcola il suo quadrato. Il suggerimento del tipo per l'argomento numerico è definito come "int" usando il simbolo ":" (colon) mentre il tipo di tipo per il tipo di ritorno è nuovamente definito come "int" usando un simbolo "->" (freccia).
Senza suggerimenti di tipo, la stessa funzione verrebbe definita come segue:
DEF Square (numero):Otterrai il seguente output dopo l'esecuzione dei due campioni di codice indicati sopra:
25Se si desidera solo assegnare un suggerimento di tipo a una variabile durante la sua dichiarazione, utilizzare la seguente sintassi:
var1: str = "stringa"È possibile assegnare i suggerimenti di tipo a variabili prima di "=" segno uguale. Come spiegato sopra, i nomi degli oggetti e i suggerimenti di tipo devono essere separati da un simbolo ":" (colon).
L'interprete di Python non applichi suggerimenti di tipo. Quindi, se si cambia il tipo di oggetti in qualsiasi altro tipo casuale disponibile in Python, otterrai lo stesso risultato fintanto che la logica stessa non lancia un errore. Ecco il campione del codice:
DEF Square (Numero: Float) -> STR:Qui, l'argomento numerico è di tipo "float". La funzione "Square" ora restituisce un tipo di tipo "STR". Tuttavia, entrambi questi tipi non vengono applicati e otterrai "25" poiché l'output e il valore restituito saranno di tipo "int". Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:
25Usando alias di tipo
Per definire i suggerimenti di tipo per oggetti complessi contenenti più tipi o tipi di oggetti personalizzati, è possibile utilizzare alias di tipo. Il seguente campione di codice mostra l'utilizzo degli alias di tipo:
Integerlist = elenco [int]Nella prima affermazione, un nuovo alias di tipo chiamato "integerlist" è definito assegnandolo un tipo. La definizione del tipo può essere semplice o complessa contenente più tipi. Successivamente, questo alias di tipo viene quindi utilizzato nella funzione quadrata ed è assegnato all'argomento principale e al valore di ritorno. La funzione quadrata ora restituisce il quadrato di ciascun numero in un elenco. Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:
[25, 36, 49]Usando il suggerimento di tipo "qualsiasi"
Il tipo "qualsiasi" può essere utilizzato per annotare variabili, argomenti e tipi di ritorno con qualsiasi suggerimento di tipo. Gli oggetti con il suggerimento di tipo "qualsiasi" possono essere una stringa, un numero intero, un galleggiante o qualsiasi altro tipo valido in Python. Ecco un esempio:
dalla digitazione di importazione qualsiasiLa prima istruzione importa il tipo "qualsiasi" dal modulo "digitazione". Il modulo di digitazione fornisce supporto per i suggerimenti di tipo nei programmi Python e devi importare determinati tipi da esso per usarli. Successivamente, invece di usare STR, Int, Float o qualsiasi altro tipo di tipo, "qualsiasi" viene utilizzato per indicare che la variabile può essere di qualsiasi tipo durante la sua vita. Si noti che i suggerimenti di tipo non sono ancora applicati in Python senza usare alcuna libreria di terze parti.
Utilizzando un modulo di terze parti per controllare i suggerimenti del tipo
Mypy è uno dei moduli di controllo del tipo più utilizzati disponibili per Python. Puoi usarlo per trovare errori relativi al tipo di suggerimento nei programmi Python. È possibile installarlo in Ubuntu e altre distribuzioni Linux dal Gestione pacchetti PIP. Per fare ciò, esegui uno di questi comandi:
$ pip Installa mypy
$ pip3 installa mypy
Una volta che Mypy è stato installato nel tuo sistema Linux, è possibile controllare i problemi di controllo del tipo rigoroso in un programma Python eseguendo un comando nel seguente formato:
$ mypy programma.Py
Nota che Mypy è solo uno strumento per controllare il controllo rigoroso. Eseguirà un rapporto sul tuo programma Python e ti mostrerà gli errori di controllo. Tuttavia, sarai comunque in grado di eseguire programmi Python normalmente (con o senza suggerimenti di tipo) e non verranno lanciati errori correlati a suggerimenti durante l'esecuzione. Considera il seguente campione di codice:
DEF Square (Numero: int) -> int:Questo campione di codice è identico a uno degli esempi sopra spiegati. Supponendo che risieda in un "principale.Py ”file, puoi controllare i suggerimenti del tipo usando mypy eseguendo il comando seguente:
$ mypy main.Py
Dopo aver eseguito il comando sopra, è necessario ottenere il seguente output:
Successo: nessun problema riscontrato in 1 file di origineSe si fornisce un tipo di tipo float alla chiamata di funzione quadrata nello stesso esempio sopra, Mypy lancerà un errore.
DEF Square (Numero: int) -> int:Ora quando esegui il file usando "Mypy Main.comando py ", otterrai un errore simile a questo:
principale.PY: 26: Errore: argomento 1 a "quadrato" ha un tipo incompatibile "galleggiante"; previsto "int"Questo è solo un rapporto di errore che ti mostrerà gli errori di tipo di suggerimento. Se esegui entrambi i campioni di codice sopra menzionati senza mypy, otterrai il seguente output:
25Questo copre l'uso più semplice e comune della sintassi dei suggerimenti di tipo in Python. Per ulteriori informazioni su suggerimenti di tipo, utilizzo avanzato e tipi personalizzati, consultare la documentazione ufficiale di Python disponibile qui.
Conclusione
Tipo Suggerimenti in Python forniscono un modo sistematico per allegare gli indicatori di tipo a variabili, funzioni e classi. Mentre Python stesso non applichi suggerimenti di tipo, è possibile utilizzare i moduli di terze parti per controllare i suggerimenti del tipo e utilizzarli come una forma di base di test per affermare il comportamento previsto degli oggetti Python nel tuo programma. Il modo in cui è progettato il linguaggio di programmazione di Python e la sua filosofia principale, il controllo rigoroso per i suggerimenti di tipo non può mai essere implementato nella Biblioteca Python standard.