3.20 warnings -- Controllo dei messaggi di avvertimento

Nuovo nella versione 2.1.

I messaggi di warning (NdT:avvertimento) vengono emessi nelle situazioni in cui è utile avvertire l'utente del verificarsi di qualche condizione in un programma, una condizione però che (di solito) non è così critica da implicare il sollevamento di un'eccezione e la terminazione del programma stesso. Per esempio, potreste voler emettere un messaggio di avvertimento quando un programma sta utilizzando un modulo obsoleto.

I programmatori Python usano gli avvertimenti chiamando la funzione warn() definita in questo modulo. (I programmatori C usano PyErr_Warn(); vedete il Python/C API Reference Manual per ulteriori dettagli).

I messaggi di avvertimento vengono scritti normalmente su sys.stderr, ma la loro disposizione può venire modificata in modo flessibile, dall'ignoramento totale fino al loro inserimento all'interno delle eccezioni. La tipologia degli avvertimenti può variare in base alla loro categoria (vedete più sotto), al testo nel messaggio di avvertimento, e al punto da cui vengono emessi. Le ripetizioni di un particolare messaggio di avvertimento provenienti da uno stesso luogo di origine vengono di solito soppresse.

Esistono due livelli nel controllo degli avvertimenti: primo, ogni volta che viene emesso un avvertimento, viene effettuata una scelta se un messaggio debba venire emesso oppure no; successivamente e in caso di esito positivo, il messaggio viene formattato e stampato usando un qualche strumento impostabile dall'utente.

Il compito di capire se è necessario emettere un messaggio di avvertimento o meno, viene svolto da un filtro, che consiste in una sequenza di regole e azioni a cui corrispondere. Delle regole possono venire aggiunte al filtro attraverso la funzione filterwarnings() e reimpostate allo stato predefinito mediante la funzione resetwarnings().

La stampa dei messaggi di avvertimento viene eseguita chiamando la funzione showwarning(), che può essere ridefinita; l'implementazione predefinita di questa funzione formatta il messaggio attraverso la chiamata a formatwarning(), funzione che può a sua volta essere ridefinita.



Subsections
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.