Python

Mejores mensajes de error en Python 3.10

Además de las mejoras de tipado y la introducción de Switch-Case otra de las novedades con las que nos encontramos al actualizar a la versión 3.10 de Python son unos mensajes de error más claros. Ahora, en muchas ocasiones, cuando el código tiene un error nos encontraremos con mensajes más útiles para identificar cuál es el problema. Lo que se va a traducir en procesos de depuración más rápidos. Veamos algunos ejemplos.

Cerrar listas, tuplas y diccionarios

Cuando nos olvidamos cerrar una lista, tupla o diccionario en Python nos encontrábamos con un error genérico “unexpected EOF while parsing”. A partir de Python 3.10 el intérprete nos indicará exactamente cual es el objeto que nos olvidamos cerrar. Permitiéndonos ir directamente al error para solucionarlo.

Por ejemplo, si nos olvidamos cerrar un diccionario:

dic = {'A':1, 'B':1

El error que nos generaría Python 3.9 sería el siguiente

  File "/analyticslane/error1.py", line 2
    
                       ^
SyntaxError: unexpected EOF while parsing

Mientras que en Python 3.10 se obtendría el siguiente error

  File "/analyticslane/error1.py", line 1
    dic = {'A':1, 'B':1
          ^
SyntaxError: '{' was never closed

Como vemos el segundo error es mucho más claro que el primero, siendo más fácil solucionar el problema.

Asignar una variable en un if

Si en un if se utiliza el operador asignación (=) en lugar del operador de comparación (==) en Python 3.9 nos aparecerá un error de “invalid syntax”. Por su parte, el intérprete de Python 3.10 nos indicará el error de forma más clara. Así para el siguiente código

if 1 = 2:
    pass

El error que nos generaría Python 3.9 sería el siguiente

  File "/analyticslane/error2.py", line 1
    if 1 = 2:
         ^
SyntaxError: invalid syntax

Mientras que en Python 3.10 se obtendría el siguiente error

  File "/analyticslane/error2.py", line 1
    if 1 = 2:
       ^
SyntaxError: cannot assign to literal here. Maybe you meant '==' instead of '='?

Al igual que antes el segundo es mucho más claro que el primero.

Imagen de Michael Gaida en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Por Qué las Contraseñas Largas son más Seguras que las Complejas

"Tu contraseña debe tener al menos 8 caracteres, una mayúscula, un número y un símbolo…

11 horas ago

Gini, KS y AUC: Cómo Medir la Calidad de un Modelo de Credit Scoring

Cuando un analista de riesgo presenta un nuevo scorecard ante el comité de dirección, la…

2 días ago

Curiosidad: De dónde vienen foo, bar y foobar

Si revisáis código o documentación de otros programadores, tarde o temprano os toparéis con dos…

1 semana ago

BG/NBD + Gamma/Gamma: el modelo probabilístico para CLV en compras continuas

Los dos artículos anteriores cubrieron el CLV clásico —una fórmula útil pero que trata a…

1 semana ago

Errores habituales al trabajar con DataFrames grandes en Pandas (y cómo evitarlos)

Hay un momento muy concreto en la vida de casi todo análisis: el código que…

2 semanas ago

Champion vs Challenger: Cómo los Bancos Validan Modelos Nuevos antes de Ponerlos en Producción

Has construido un nuevo modelo de credit scoring. Las métricas de validación son mejores que…

2 semanas ago

This website uses cookies.