¿Eres un programador? Si es así, la depuración es una habilidad esencial, independientemente del lenguaje en el que esté codificando. En este artículo, aprenderá a usar el afirmar declaración en Python para una depuración efectiva.
Cuando esté trabajando en un proyecto, definirá varios módulos. Esto incluye funciones, definiciones de clase y más. Y es probable que encuentre errores o resultados inesperados debido a un error en la implementación. Las declaraciones de afirmación son útiles para depurar dicho código.
En este tutorial, aprenderemos la sintaxis para usar la declaración de afirmación seguida de ejemplos de código para verla en acción. También veremos qué son los errores de aserción y cómo podemos usarlos para corregir los errores en el código durante el desarrollo.
Vamos a empezar!
How to Use the Assert Statement in Python
Aprenderemos la sintaxis para usar la declaración de afirmación, luego procederemos a codificar algunos ejemplos.
Sintaxis de la declaración de afirmación
Comencemos con la sintaxis para usar la declaración de afirmación en Python:
assert expression, message
Aquí,
expression
es cualquier expresión de Python válida para ser evaluada. Esto puede ser una condición sobre el valor de la variable, el valor de verdad de la variable, el valor de retorno de una función y más.- Mientras el
expression
evalúa aTrue
, la declaración de afirmación no arroja un error ni devuelve nada. Esto indica que el programa funciona como se esperaba. - Si
expression
ya no esTrue
, unAssertionError
Se plantea una excepción. message
es un opcional cadena. Puede especificar un mensaje que se muestra en el seguimiento cada vez que unAssertionError
Se plantea una excepción.
A continuación, procedamos a codificar algunos ejemplos en los que la declaración de afirmación puede ayudarnos a escribir un código más limpio y sin errores.
Puede encontrar los ejemplos de código utilizados en este tutorial en esta esencia de GitHub.
Python’s Assert Statement Examples

Considere el siguiente ejemplo. Di que tienes un discount
variable en su código. Pero le gustaría que su valor sea siempre menor o igual que el max_discount
.
Para comprobar que accidentalmente no configura el discount
variable a un valor, puede agregar una aserción. La expresión a evaluar es: discount <= max_discount
.
>>> max_discount = 50
>>> discount = 20
>>> assert discount <= max_discount
Aquí, discount
(20) es menor que max_discount
(50). Entonces, la declaración de afirmación no arroja ningún error.
La excepción AssertionError
Si discount
variable se establece en un valor mayor que max_discount
, un AssertionError
Se plantea una excepción.
>>> discount = 75
>>> assert discount <= max_discount
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError
Sabemos que la declaración de afirmación también nos permite especificar una cadena de mensaje opcional.
También usemos una cadena de mensaje que brinde una información de diagnóstico más descriptiva. A la declaración de afirmación, agreguemos una cadena f de Python que también contiene los valores de discount
y max_discount
.
>>> assert discount <= max_discount, f"discount should be at most {max_discount}; got discount = {discount}"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError: discount should be at most 50; got discount = 75
Como se ve en la celda de salida anterior, el AssertionError
excepción ahora incluye los valores de la discount
y max_discount
variables.
Debugging and Testing Python Functions with Assert
Al definir funciones, a veces puede introducir errores (errores lógicos) sin darse cuenta que evitarán que su función funcione según lo previsto.

Tomemos un ejemplo. Supongamos que hay una prueba en una clase y los estudiantes tienen la oportunidad de intentar una pregunta adicional. Cualquier estudiante que intente responder la pregunta adicional obtendrá 10 puntos adicionales en la prueba. 😄
Considere la siguiente función get_final_score
:
- Toma en una puntuación actual,
score
, y un booleanobonus
. - Si un estudiante ha respondido la pregunta de bonificación, el valor booleano
bonus
isTrue
, y obtienen 10 puntos más que su puntaje actual. - A continuación, la función devuelve la puntuación final.
def get_final_score(score,bonus):
if bonus:
score += 10
return score
Hagamos algunas llamadas a la función. Vemos que para puntuaciones de 34 y 40 con bonus
establecido en True
y False
, las puntuaciones finales son 44 y 40, respectivamente.
print(get_final_score(34,True))
# 44
print(get_final_score(40,False))
# 40
Sin embargo, el máximo de puntos en la prueba es, digamos, 50. Entonces, si un estudiante obtiene 49 y también respondió la pregunta adicional, la función get_final_score
felizmente calculará la puntuación final en 59.
print(get_final_score(49,True))
# 59
Técnicamente, es posible. Pero supongamos que un estudiante no puede obtener más que los puntos máximos posibles para la prueba. 🙂
Así que vamos a inicializar un max_score
variable. Y capturar la puntuación devuelta de la función en el final_score
variable.
Posteriormente añadimos una afirmación que comprueba si el final_score
es menor que el max_score
.
def get_final_score(score,bonus):
if bonus:
score += 10
return score
final_score = get_final_score(47,True)
max_score = 50
assert final_score <= max_score
Ahora obtenemos una excepción AssertionError para la llamada de función get_final_score(47,True)
:
Traceback (most recent call last):
File "main.py", line 17, in <module>
assert final_score <= max_score
AssertionError
Ahora agregamos una cadena f descriptiva a la declaración de afirmación de Python:
assert final_score <= max_score,f"final_score should be at most {max_score}; got {final_score}"
Traceback (most recent call last):
File "main.py", line 17, in <module>
assert final_score <= max_score,f"final_score should be at most {max_score}; got {final_score}"
AssertionError: final_score should be at most 50; got 57
Modificación de la función
Volvamos atrás y modifiquemos la definición de la get_final_score
función para corregir el comportamiento inesperado:
- La función
get_final_score
también tomamax_score
como un parámetro. - Comprobamos si
bonus
es verdad. Si es Verdadero, sumamos 10 puntos a la variable puntuación. - Entonces, comprobamos si
score
es mayor quemax_score
. Si es así, volvemosmax_score
. - De lo contrario, volvemos
score
.
Ahora nos hemos asegurado de que la puntuación final sea siempre menor o igual que max_score
.
def get_final_score(score,bonus,max_score):
if bonus:
score += 10
if score > max_score:
return max_score
return score
Como ejercicio rápido, escriba algunas afirmaciones para confirmar que la función ahora funciona como se esperaba.
A Note on AssertionError Exception
Aunque se produce una excepción AssertionError cuando la expresión se evalúa como Falsa, debemos recordar no manejar errores como excepciones. lo que significa que nosotros no debería hacer algo como esto:
try:
<doing this>
except AssertionError:
<do this>
En el ejemplo anterior de get_final_score
, usamos la aserción para verificar si final_score
es menor que max_score
. Entonces nosotros modificó la definición de la función tal que no haya errores de aserción.
Eso es lo afirmaciones son para. Son controles de cordura para el código y ayudan a escribir un código más limpio. El manejo de excepciones, por otro lado, es anticipar y manejar errores inesperados en tiempo de ejecución. Estos a menudo incluyen tipos y valores de entrada no válidos.
En resumen, debe usar la declaración de aserción de Python para una depuración efectiva y no manejar AssertionErrors como excepciones.
Conclusión
Este tutorial lo ayudó a comprender cómo usar la declaración de afirmación en Python. Aquí tienes un resumen de lo que has aprendido:
- Las declaraciones de afirmación de Python (afirmaciones) toman la forma
assert expression
. Esto comprueba si elexpression
isTrue
. Si no se evalúa aTrue
, unAssertionError
Se plantea una excepción. - También puede usar la afirmación con la sintaxis
assert expression, message
. Esto imprimirá elmessage
cadena cada vez que unAssertionError
ocurre una excepción. - Debe recordar no implementar el manejo de excepciones para manejar errores de aserción. Y utilice las aserciones como una útil herramienta de depuración para las comprobaciones de cordura de su código.
Como desarrollador, las aserciones lo ayudan con la depuración. Para asegurarse de que todos los componentes individuales (módulos) del proyecto funcionen como se espera, puede aprender a escribir pruebas unitarias en Python.
A continuación, consulte esta lista de proyectos de Python para principiantes puedes trabajar.