Le istruzioni sono un modo utile per inserire asserzioni di controllo nel programma:
assert_stmt |
::= | "assert" expression ["," expression] |
La forma semplice, "assert espressione", è equivalente a
if __debug__: if not expression: raise AssertionError
La forma estesa, "assert espressione1, espressione2", è equivalente a
if __debug__: if not expression1: raise AssertionError, expression2
Queste equivalenze assumono che __debug__
e
AssertionError si riferiscano alle
variabili built-in con questi nomi. Nell'implementazione corrente, la
variabile built-in __debug__
è 1 in circostanze normali, 0
quando viene richiesta un'ottimizzazione (utilizzando l'opzione -O da
riga di comando). Il generatore del codice corrente non emette alcun
codice per un'istruzione assert quando viene richiesta
un'ottimizzazione al momento della compilazione. Si noti che è
inutile includere il codice sorgente per le espressioni che falliscono
in quanto verranno visualizzate come parte della traccia dello stack.
Assegnamenti in __debug__
sono illegali. Il valore per la
variabile built-in viene determinato quando parte l'interprete.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.