L'istruzione assert in Python
Nel linguaggio python l'istruzione assert mi consente di generare un errore se una condizione è falsa.
assert condizione [, espressione condizionata ]
Il funzionamento dell'istruzione assert è simile all'istruzione if ma genera un'errore,.
- Se la condizione è falsa, l'istruzione assert genera un errore (AssertionError) o per meglio dire un'eccezione. Inoltre, se è presente anche l'espressione condizionata facoltativa, la esegue.
- Se la condizione è vera, non fa nulla e salta alla prima istruzione successiva dello script.
Nota. In inglese assert significa "affermare". Vuol dire che la condizione deve essere vera. Se non è vera, nel programma c'è qualcosa che non va come dovrebbe andare.
Un esempio pratico
In questo script assegno alla variabile x il valore 0.
Nella riga successiva affermo che la variabile x deve essere uguale a 1 tramite l'istruzione assert.
- x=0
- assert x==1, print("C'è un errore")
- print("tutto bene")
Poi eseguo il programma ( F5 o Run ).
L'istruzione assert controlla se la condizione (x==1) è vera.
In questo caso la condizione (x==1) è falsa. Quindi, l'istruzione assert esegue l'espressione condizionata e genera un messaggio errore.
L'output del programma è il seguente:
C'è un errore
Traceback (most recent call last):
File "tutorial.py", line 2, in <module>
assert x==1, print("Errore")
AssertionError: None
L'istruzione assert visualizza sullo schermo il messaggio "C'è un errore".
Poi va in errore ( AssertionError ).
Il programma si blocca alla riga 2 senza eseguire l'istruzione 3.
A cosa serve generare un errore?
Potrebbe sembrare inutile. In realtà, è molto utile.
Grazie all'istruzione assert posso sollevare una eccezione e trovare la soluzione al problema.
Questa funzione è particolarmente utile durante la fase di test e debug del programma.
Esempio. Se a causa di un errore di digitazione nel data entry un voto universitario fosse negativo (-5) o superiore a 30 ( es. 35), sarebbe sicuramente un errore sostanziale. Tuttavia, non causerebbe un errore nel computo della media universitaria dello studente perché la media matematica sarebbe comunque possibile. In questo caso è difficile accorgersi del problema.... se non dopo la laurea dello studente, perché il programma continua l'esecuzione. Fortunatamente, in python l'istruzione assert può bloccare il programma e impedire sul nascere il proseguimento del calcolo.