5

馃悕 C贸mo comenzar a hacer debugging a funciones con Python

Miguel
datormx
36159

Una de las herramientas que utilizamos frecuentemente en ingenier铆a de software son las funciones. Estas nos permiten encapsular nuestro programa en piezas de c贸digo que hacen algo espec铆fico facilit谩ndonos la vida como programadores. Pero 驴qu茅 pasa cuando obtenemos errores al utilizar una funci贸n creada por nosotros? Bueno, existen tres pasos bastante 煤tiles para hacer debugging a funciones. Para contarte de ellos, y que los puedas entender mejor, antes te contar茅 un poco m谩s de funciones y de su interfaz.

carbon(1).png

Funciones y su interfaz

Imag铆nate una funci贸n como un mini programa que cumple una tarea espec铆fica dentro de un programa mayor que te da varias ventajas. Seguramente quieres saber cu谩les son las principales. Dos de las m谩s importantes son que el c贸digo es m谩s sencillo de leer y por lo mismo te permiten encontrar errores con mayor facilidad.

defsuma(a, b):"""Suma los n煤meros a y b

	Par谩metros: a, b int > 0

	Retorna: a + b
	"""
	resultado = a + b
	return resultado

En cuanto a la interfaz de una funci贸n, es el resumen de c贸mo es utilizada espec铆ficando:

  • Cu谩les son sus par谩metros
  • Qu茅 hace la funci贸n
  • Qu茅 valor(es) retorna

En el c贸digo del ejemplo anterior est谩 la declaraci贸n de una funci贸n llamada suma donde, expl铆citamente con docstrings, se explica c贸mo est谩 compuesta su interfaz. Sus par谩metros son dos n煤meros enteros a y b, hace una operaci贸n de suma de esos n煤meros y retorna el resultado de esa operaci贸n.

Debugging de funciones

Para comenzar a hacer debugging a cualquier pieza de c贸digo solamente necesitas saber dos cosas:

  • Utilizar el print statement
  • Saber c贸mo se mueven los datos en tu programa

En el caso espec铆fico de debugging a funciones debes pensar en la interfaz de la funci贸n como un contrato firmado entre la funci贸n y t煤. Todos sabemos que cuando un contrato no se cumple pasar谩n cosas malas. Por esto, al llamar a una funci贸n, uno se compromete a mandar ciertos par谩metros (precondiciones) y la funci贸n a hacer cierta tarea (postcondiciones).

suma(5, 3)
>> 8

En este c贸digo de ejemplo el llamado de la funci贸n se ejecutar谩 correctamente. 驴Qu茅 pasar铆a si al llamar a la funci贸n gener谩ramos alg煤n error? Tendr铆amos que comenzar a hacer debugging a la funci贸n y para ello debemos considerar tres posibilidades:

  1. Hay algo malo con los argumentos que recibe (precondici贸n violada)
  2. Hay algo malo con la funci贸n en s铆 (postcondici贸n violada)
  3. Hay algo malo con el valor que retorna la funci贸n o con la forma en la que lo usas

Lo primero que debes revisar es la primera posibilidad ejecutando un print de los par谩metros que recibe la funci贸n. Adicionalmente, tambi茅n puedes hacer un print del tipo de los valores de esos par谩metros.

defsuma(a, b):
	print(a, b) #Comprueba los valores recibidos
	print(type(a), type(b)) #Comprueba el tipo de los valores
	resultado = a + b
	return resultado

suma('a', 3) 

Si ejecutas este c贸digo ver谩s que una de las variables no est谩 en el formato que necesita la funci贸n para ejecutar la operaci贸n.

Una vez comprobado que los par谩metros son correctos existe la posibilidad de que la funci贸n no haga lo que debe. Para verificar esto agrega prints de los resultados de cada una de las operaciones antes del return.

defsuma(a, b):
	resultado = a - b
	print(resultado) #Verifica el resultado de la operaci贸n antes del returnreturn resultado

suma(5, 3)

De este modo ver谩s que la operaci贸n no se est谩 ejecutando como esperar铆as y podr谩s comenzar a buscar en qu茅 parte de esa operaci贸n est谩 el error.

Agotando las otras dos posibilidades el error estar谩 relacionado con el return de la funci贸n o con un mal uso del valor retornado por la funci贸n. Para este caso debes revisar que en la definici贸n de la funci贸n exista un return con los valores u operaciones que esperas. Si el error no est谩 ah铆, verifica el llamado de la funci贸n y aseg煤rate de que el valor retornado se usa correctamente.

Convi茅rtete en un verdadero computer scientist

Ahora conoces tres pasos que te facilitar谩n hacer debugging a tus funciones. En este caso utilizamos Python, pero puedes utilizar el mismo proceso para casi cualquier lenguaje de programaci贸n. Esto incrementar谩 incre铆blemente tus habilidades de programaci贸n.

Debugging, estructuras de datos, testing y m谩s son habilidades de pensamiento computacional que necesitas conocer para convertirte en un verdadero computer scientist. Si no me crees, conoce m谩s de ellas completando el Curso de Introducci贸n al Pensamiento Computacional con Python y comienza tu camino en el mundo de las ciencias computacionales. 隆Nunca pares de aprender! 馃殌馃

Escribe tu comentario
+ 2