Funciones

Y por que las funciones?

Contents

Es hora de que hablemos de lo mas importante en las funciones, reutilizar el código. La importancia de reutilizar el código en cualquier lenguaje nos lleva a utilizar funciones. Anteriormente se usaban instrucciones como “GOTO” para repetir una secuencia de lineas, estamos hablando de las épocas del BASIC de hace como 40 años.

El tener un pedazo de código que podemos llamar en nuestra base de código no solo nos ahorra escribir el mismo código cientos de veces, tambien hace mas fácil darle mantenimiento a nuestro código.

Si copiamos y pegamos el mismo pedazo de código en diversas ocasiones en nuestro programa y tiempo despues descubrimos que hay un error en ese pedazo de código, tendremos que ir buscando cada vez que usamos ese pedazo de código en el programa, actualizarlo y rogar que no hayamos metido mas errores.

Sin embargo si definimos una función y solo mandamos llamar dicha función N numero de veces en el programa, si descubrimos que hay un error entonces solo actualizamos la función y listo!, la corrección estará disponible para todo aquel que mande llamar la función.

La regla de oro: DRY

Esta es la regla de oro para cada programador: “Don’t Repeat Yourself” que quiere decir “No te repitas a ti mismo” y en código nos quiere decir que no repitamos código, si empezamos a repetir código entonces hay que hacerlo una función.

Recursividad

La recursividad es la capacidad de una función de llamarse a sí misma con otros parámetros. Muy util para cuando el residuo de nuestra función puede ser procesado de nuevo. Por ejemplo, queremos saber cuantas veces cabe un numero en otro (obvio, podemos usar / pero para el ejemplo vamos a crear una función ).

def division(numero, divisor, veces=0):
    if divisor > numero:
        return veces, numero
    rest = numero - divisor
    return division(rest, divisor, veces = veces+1)

print division(50, 7)

(7, 1)

Como podemos ver en la función, aceptamos dos parámetros de forma obligatoria y un adicional veces  con un valor predefinido.

Lo primero que hacemos es comparar si el divisor es mayor que el numero, en este caso no tiene caso continuar, vamos a devolver el numero de veces que hemos realizado la división y el numero (que es el residuo en este caso).

Si el número es mayor entonces le restamos el valor del divisor y lo asignaremos a una variable llamada rest , entonces utilizaremos este valor sobre la misma función. numero ahora tendrá el valor de rest, el divisor se pasa igual pero aquí viene la magia, incrementaremos en 1 el valor de veces.

Como vamos reduciendo el valor de numero llegara el momento en que el divisor será mayor que el numero y en este momento se hará el return de cada una de las veces que se ha mandado a llamar. Tendremos el numero de veces que se ha mandado a llamar la función y un valor de residuo.

Nota: Siempre debemos retornar en algún punto, si hacemos una función que se mande a llamar eternamente Python mandará un error de recursión y la ejecución del programa se verá interrumpida.

Loading

You must be logged in to take the quiz.