Advertencias en Python

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 warningmó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, UserWarninges 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ía UserWrningy luego se muestra la advertencia usando el warn()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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *