Las advertencias se proporcionan para advertir al desarrollador de situaciones que no son necesariamente excepciones. Por lo general, una advertencia ocurre cuando hay algunos elementos de programación obsoletos, como palabras clave, funciones o clases, etc. Una advertencia en un programa es distinta de un error. El programa Python termina inmediatamente si ocurre un error. Por el contrario, una advertencia no es crítica. Muestra algún mensaje, pero el programa se ejecuta. La warn()
función definida en el warning
módulo ‘ ‘ se utiliza para mostrar mensajes de advertencia. El módulo de advertencia es en realidad una subclase de Exception, que es una clase integrada en Python.
# program to display warning a message import warnings print('Geeks') # displaying the warning message warnings.warn('Warning Message: 4') print('Geeks !')
Producción:
Geeks main.py:8: UserWarning: Warning Message: 4 warnings.warn('Warning Message: 4') Geeks!
En el programa anterior, la warn()
función del módulo de advertencia se utiliza para mostrar el mensaje Warning: Message: 4
, UserWarning
es la categoría de función predeterminada warn()
.
Categorías de advertencia
En Python hay una variedad de excepciones integradas que reflejan categorías de advertencia, algunas de ellas son:
- Clase de advertencia: es la superclase de todas las clases de categoría de advertencia y una subclase de la clase de excepción.
- UserWarning Class: categoría predeterminada de la función warn().
- Clase DeprecationWarning: categoría base para alertas sobre características obsoletas cuando esas advertencias son para otros desarrolladores (activadas por código en __main__ a menos que se ignoren).
- SyntaxWarning Class: Clase base para advertencias de atributos sintácticos sospechosos.
- RuntimeWarning Class: clase base para advertencias de atributos de tiempo de ejecución sospechosos.
- Clase FutureWarning: clase base para advertencias sobre características obsoletas cuando ciertas advertencias están destinadas a usuarios finales de programas escritos en Python.
- PendingDeprecationWarning Class: clase base para advertencias de un atributo obsoleto.
- ImportWarning Class: Clase base para las advertencias provocadas durante el proceso de importación de un módulo.
- UnicodeWarning Class: clase base para advertencias basadas en Unicode.
- BytesWarning Class: clase base para bytes y advertencias basadas en bytearray.
- ResourceWarning Class: clase base para advertencias relacionadas con recursos.
Filtros de advertencia
El filtro de advertencia en Python maneja las advertencias (presentadas, ignoradas o generadas como excepciones). El filtro de advertencias establece una lista organizada de parámetros de filtro, cualquier advertencia en particular se compara con cada requisito de filtro en toda la lista hasta que se realiza la coincidencia, el filtro determina la disposición de la coincidencia. Cada entrada es de hecho una tupla (acción, mensaje, categoría, módulo, lineno) de la forma en que:
- La acción puede ser cualquiera de las siguientes strings:
Cuerda Explicación «defecto» Muestra las primeras advertencias coincidentes para cada posición «error» Convierte advertencias para generar excepciones «pasar por alto» Nunca muestre advertencias que coincidan «siempre» Mostrar siempre las advertencias que coincidan «módulo» Muestra las primeras advertencias coincidentes por módulo «una vez» Mostrar solo las primeras advertencias coincidentes, independientemente de dónde se encuentren - El mensaje es una string que tiene una expresión regular que debe coincidir con el comienzo de la advertencia. (La expresión compilada siempre distingue entre mayúsculas y minúsculas)
- La categoría es una clase (subclase de advertencia) de la cual la clase de advertencia debe ser una subclase para la coincidencia.
- El módulo es una string con una expresión regular que debe coincidir con el nombre del módulo (la expresión compilada siempre distingue entre mayúsculas y minúsculas).
- lineno es un número entero para coincidir con el número de la línea en la que apareció la advertencia, o 0 para coincidir con cualquier número de la línea .
Funciones de advertencia
Algunas de las funciones comúnmente utilizadas del módulo de advertencia son:
- advertir (mensaje, categoría = Ninguno, nivel de pila = 1, fuente = Ninguno): esta función muestra una advertencia, la ignora o la convierte en una excepción.
# program to illustrate warn()
# function in warning module
# importing modules
import
warnings
# displaying warning
warnings.warn(
'Geeks 4 Geeks'
)
Producción:
main.py:2: UserWarning: Geeks 4 Geeks warnings.warn('Geeks 4 Geeks')
En el programa anterior, las advertencias se muestran utilizando la
warn()
función del módulo de advertencia. - warn_explicit(mensaje, categoría, nombre de archivo, lineno, módulo=Ninguno, registro=Ninguno, module_globals=Ninguno, fuente=Ninguno): Esta función es un método de bajo nivel con características de advertencia()
- filterwarnings(action, message=”, category=Warning, module=”, lineno=0, append=False): Esta función añade una entrada a las especificaciones del filtro de avisos.
# program to illustrate filterwarnings()
# function in warning module
# importing module
import
warnings
# adding entry into the specifications
# of the warnings filter.
warnings.filterwarnings(
'ignore'
,
'.*do not.*'
, )
# displaying warinings
warnings.warn(
'Geeks 4 Geeks !'
)
# this warning will not be displayed
warnings.warn(
'Do not show this message'
)
Producción:
main.py:8: UserWarning: Geeks 4 Geeks! warnings.warn('Geeks 4 Geeks!')
Aquí no se muestra el segundo mensaje de advertencia debido a
warnings.filterwarnings('ignore', '.*do not.*', )
la acción en la que se encuentra"ignore"
. - showwarning(mensaje, categoría, nombre de archivo, lineno, file=Ninguno, line=Ninguno): Esta función escribe una advertencia en un archivo.
- simplefilter(action, category=Warning, lineno=0, append=False): esta función agrega una sola entrada a la lista de requisitos del filtro de advertencias.
# program to illustrate simplefilter()
# function in warning module
# importing module
import
warnings
# adding a single entry into warnings filter
warnings.simplefilter(
'error'
, UserWarning)
# displaying the warning
warnings.warn(
'This is a warning message'
)
Producción:
Traceback (most recent call last): File "main.py", line 8, in warnings.warn('This is a warning message') UserWarning: This is a warning message
En el programa anterior, se agrega una sola entrada al filtro de advertencias usando
warnings.simplefilter('error', UserWarning)
en qué está la acción"error"
y la categoríaUserWrning
y luego se muestra la advertencia usando elwarn()
método.
Publicación traducida automáticamente
Artículo escrito por riturajsaha y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA