Python AssertionError

Python Assertionerror



Quando un programma Python incontra una condizione imprevista durante l'esecuzione, il programma interrompe l'esecuzione e restituisce un'eccezione. In Python, le eccezioni e gli errori di sintassi sono le due principali categorie di errori. Quando un pezzo di codice Python che è sintatticamente valido crea un errore, è noto come sollevare un'eccezione/errore. Il messaggio di errore nell'ultima riga definisce il tipo preciso dell'eccezione e fornisce una descrizione per facilitare il debug e una freccia punta alla riga o alla posizione in cui si è verificata l'eccezione. La cattura e la gestione delle eccezioni è fondamentale per evitare un arresto improvviso del programma. Usa un modo diverso per eseguire il codice. Ad esempio, quando si verifica l'eccezione specificata. Questo tutorial discuterà di AssertionError e di come risolverlo in Python.

Che cos'è un AssertionError in Python?

Gli errori di asserzione sono un concetto di programmazione che si verifica quando un programmatore scrive o crea un blocco di codice utilizzato per dichiarare un criterio o una condizione da soddisfare prima dell'esecuzione del modulo. Come ogni errore Python, il controllo viene trasferito alla riga di codice successiva se la condizione specificata quando l'asserzione è stata dichiarata vera. Se è falso, invece, viene generato un errore o un'eccezione e il programma viene interrotto. L'istruzione assert può essere utilizzata in vari linguaggi di programmazione con le loro sintassi specifiche perché è indipendente dal linguaggio. È una sottoclasse o un'istanza della classe Exception. Python AssertionError ha la seguente sintassi:

Sintassi: asserire condizione, messaggio_errore (facoltativo)







Esempio

Inseriremo l'età di una persona come input e, se è inferiore a zero, la console solleverà un errore di asserzione.





Ora, cosa succede se inseriamo un'età inferiore a 0?





Il debug del codice utilizzando questo metodo è più semplice, semplificando così la ricerca di errori e la correzione dei bug nel programma.



Come funziona AssertionError in Python

Il linguaggio Python include un'istruzione assert che può essere utilizzata per generare semplici output di messaggi di errore con asserzioni logiche. Quando la dichiarazione di asserzione ha esito negativo, viene generata una 'eccezione' AssertionError. In Python, le classi di eccezione vengono derivate dalla classe BaseException. La classe BaseException, che è anche la classe base della classe AssertionError, è da dove deriva la classe Exception. Ci dovrebbe sempre essere un codice di gestione delle eccezioni appropriato per affrontare il fallimento di un'istruzione assert ogni volta che ne viene utilizzata una. Il gestore di eccezioni predefinito in Python stamperà il messaggio di errore scritto dal programmatore, ma l'errore può anche essere gestito o risolto senza un messaggio di errore.

Implementazione di AssertionError in Python

Di seguito sono riportati diversi esempi di AssertionError in Python:

Esempio

In questo esempio, scriveremo un programma Python per visualizzare un AssertionError in un programma che trova l'area di un cerchio.

Il valore del raggio 'r' viene passato come input a una funzione nel programma precedente creata per trovare l'area del cerchio. L'istruzione assert viene quindi utilizzata per determinare se il valore fornito o il raggio 'r' è inferiore a zero e se viene fornito un valore negativo, verrà sollevata un'eccezione. L'area del cerchio verrà restituita in base al valore del raggio “r” fornito alla funzione. Innanzitutto, la funzione viene eseguita con un valore di r come 3. La funzione viene quindi eseguita con il valore 2.5. AssertionError viene generato quando utilizziamo un valore negativo di 'r', ovvero '-1'.

Proviamo un altro esempio per visualizzare l'occorrenza di un errore di asserzione.

Esempio

In questo esempio, il programma determinerà se il valore del denominatore è diverso da zero.

Il messaggio di errore dell'asserzione di errore viene visualizzato nel programma precedente. Abbiamo creato due variabili (aeb) e i valori interi specificano le variabili. La seconda variabile, cioè b viene quindi testata per vedere se non è uguale a 0 usando l'asserzione. Altrimenti specificato, viene stampato il messaggio di errore. In caso contrario, viene visualizzato il risultato della divisione del primo numero per il secondo valore. Nell'immagine precedente viene visualizzato l'output del programma.

Applicazioni di AssertionError

Gli altri usi benefici dell'errore di asserzione includono:

  • L'asserzione aiuta a valutare i valori dei parametri
  • Le asserzioni aiutano a monitorare il tipo di input e se quel valore è valido
  • Inoltre, le asserzioni aiutano a identificare se un altro sviluppatore di codice sta abusando di un'interfaccia
  • Le asserzioni aiutano a monitorare continuamente l'output del programma

Come possiamo evitare gli errori di affermazione in Python

  1. Il flag -O in un programma Python può essere utilizzato per disabilitare ogni affermazione di asserzione. È importante tenere presente che le affermazioni che seguono una dichiarazione di asserzione non verranno eseguite se disattiviamo le dichiarazioni di asserzione.
  2. La variabile di ambiente può anche impostare un flag per disattivare le istruzioni di asserzione. Tutti i processi e le applicazioni che utilizzano o ereditano l'ambiente sono interessati da questa situazione.
  3. In Python, l'approccio più semplice per prevenire errori di asserzione è gestirli manualmente. Se ci assicuriamo che il flusso di controllo del programma sia deviato in modo che non acceda alle dichiarazioni di asserzione, non c'è possibilità di errori di asserzione.

Gestione dell'assertionError

Oltre alla dichiarazione di asserzione, possiamo anche gestire l'errore di asserzione utilizzando i seguenti metodi:

Gestione dell'errore di asserzione utilizzando i blocchi Try-Except

L'istruzione assert determina se i valori sono uguali. Il blocco try genera l'errore AssertionError perché questi numeri interi non sono uguali. Il comando print viene eseguito dopo che il blocco exclude ha rilevato l'eccezione. Qui viene visualizzato l'output dell'istruzione print dal blocco dell'eccezione. La parola chiave raise può essere utilizzata per rilanciare l'errore nel blocco di eccezione in modo da poter determinare l'origine dell'eccezione. Quando si verifica un'eccezione, la parola chiave 'rilancio' rileverà un errore e terminerà il programma. Aiuta a mantenere o mantenere un record/traccia dell'eccezione esistente.

Gestione dell'assertionError utilizzando il modulo di traceback

Quando il codice contiene diverse dichiarazioni di asserzione, il modulo di traceback aiuta a identificare l'esatta origine dell'errore.

Utilizzando il modulo traceback, la nostra istruzione print può essere scritta con i segnaposto {}.

Inoltre, possiamo definire altre variabili per memorizzare la posizione della riga, il nome del file, il nome del metodo, nonché il testo/messaggio in cui si è verificata l'eccezione.

L'oggetto di traceback è denominato 'tb'. Utilizziamo due segnaposto: uno per il testo e uno per la posizione della linea nell'istruzione print.

I tre componenti dell'istruzione 'raise' -exc_type, exc_traceback e exc_value - vengono restituiti dalla funzione sys.exc_info().

Gestione dell'assertionError utilizzando l'istruzione print

Per gestire manualmente un'eccezione, possiamo utilizzare l'istruzione 'print' all'interno del blocco di eccezione.

L'istruzione print stampa qualsiasi messaggio di errore immesso dall'utente. Con questo metodo, un errore tecnico non sarà un problema per l'utente.

Invece di un errore, viene visualizzato un breve messaggio.

Conclusione

In questo post, abbiamo visto per la prima volta l'introduzione delle eccezioni in Python. Abbiamo discusso di AssertionError, di come funziona e di come possiamo implementare AssertionError in Python. Abbiamo spiegato diversi vantaggi di AssertionError e come possiamo evitarli. Nell'ultima sezione di questo post, abbiamo visto come possiamo gestire AssertionError in Python utilizzando i blocchi Try-Except, il modulo di traceback e l'istruzione di stampa.