Anuncios

Bienvenidos sean a este post, en los dos posts anteriores vimos todas las posibilidades de como pasar informacion a nuestras funciones pero hoy nos centraremos en como devolver informacion de las mismas.

Anuncios
Anuncios

Todos los lenguajes dan la posibilidad de poder devolver un valor por medio de las funciones y en su gran mayoria solo devuelven un valor pero python al igual que Lua nos brindan la posibilidad de devolver mas de un valor, en python al ser gracias a Tuple podemos devolver todos los que queramos y en Lua es una conducta propia del lenguaje, esta caracteristica nos brinda la posibilidad de poder generar un codigo menos pesado o mejor dicho tedioso para que permita esta conducta, en algunos posts anteriores vimos como devolver un valor de una funcion y para ello usamos a la funcion return y seguido del valor o la variable con la informacion a devolver.

Anuncios
Anuncios

La funcion return es muy similar a la break ya que ambas nos sacaran del bloque que estamos trabajando ya sea un condicional o un bucle pero return a diferencia de break nos devuelve el valor adjunto, podemos usar todos los return que necesitemos en una funcion pero recuerden que una vez ejecutado nos sacara de la funcion donde se encuentran, es decir que podemos tener varios condicionales con un return para cada condicion y solo se ejecutaran cuando se cumpla la misma, por ultimo podemos usar o no un return al final de cada funcion pero igualmente cada funcion tiene un return implicito con un valor None y en caso de no informarlo lo ejecuta para salir de la misma, para entender este concepto vamos a crear la siguiente funcion en el interprete:

>>> def funcion() :
...     pass
...
Anuncios

Esta funcion es bien simple donde usamos la funcion pass la cual solo genera un valor null, si lo probamos veremos esto:

>>> funcion()
>>>
Anuncios

Al ejecutarlo no devuelve nada pero vamos a probarlo de la siguiente manera:

>>> a = funcion()
>>> print(a)
None
>>>
Anuncios

Primero asignamos a funcion a un nombre llamado a y luego imprimimos el valor almacenado que en lugar de no retornar nada nos devuelve un None que es el valor del return implicito de cada funcion, recuerdan que en este post mencionamos a la funcion factorial para hacer un calculo pero nosotros tambien podemos generar una propia, veamos el siguiente ejemplo:

>>> def factoreo(n) :
...     if n in (0, 1) :
...             return 1
...     resultado = n
...     for k in range(2, n) :
...             resultado *= k
...     return resultado
... 
>>> print(factoreo(5))
120
>>>
Anuncios
Anuncios

Primero definiremos una funcion llamada factoreo que recibira un valor, luego tenemos un condicional donde verifica si el valor recibido contiene el valor 0 o 1, si se cumple la condicion nos saca de la funcion y devuelve el valor de 1, esto es debido a que sabemos que el factoreo de 0 o 1 siempre da el valor 1, sino se cumple la condicion al nombre resultado le asignaremos el valor informado, nuestro siguiente paso sera un bucle for donde por medio de un range crearemos un rango que ira desde el numero dos hasta el numero que informamos, en el cuerpo del bucle tomaremos el valor almacenado en resultado y lo multiplicaremos por el valor obtenido en cada vuelta, si se preguntan por la formula que utilizamos, esta equivale a:

resultado = resultado * k
Anuncios

Esta es una forma de abreviarlo, una vez terminado el ciclo utilizamos a return para devolver el resultado, nuestro siguiente paso sera usar a print con el llamado a factoreo con el valor 5, inmediatamente despues nos devolvio el valor del factoreo demostrando el funcionamiento de la misma, probemos con el valor de 0:

>>> print(factoreo(0))
1
>>>
Anuncios

Observen que lo devuelto es el return del condicional y omitio completamente lo que siguio a este condicional, con esto tenemos el concepto basico de como devolver un valor pero como hacemos para devolver mas de un valor? Pasemos a ver el siguiente ejemplo:

>>> def dividir_modulo(a, b) :
...     return a//b, a%b
... 
>>> print(dividir_modulo(20, 7))
(2, 6)
>>>
Anuncios
Anuncios

Primero definimos una funcion llamada dividir_modulo, la cual recibira dos datos (a y b), dentro del bloque de la misma solo tenemos un return donde primero devolveremos el resultado de la division entera entre a y b, luego separado por una coma devolvemos el resultado de la operacion de modulo en a y b, nuestro siguiente paso sera utilizar un print para mostrar el resultado de la funcion, pasamos los dos valores y el resultado que necesitabamos, si recuerdan al principio mencionamos que este lenguaje hace trabajar a return no con un nombre de un solo valor sino con un tuple permitiendo que podamos devolver todos los valores que necesitemos y que solamente debemos separarlos con una coma para diferenciar a cada uno de ellos, esto que no parece la gran cosa no se imaginan todas las posibilidades que nos abren y sobre todo como mencionamos antes todo lo que nos evita para poder adaptar el lenguaje a este tipo de conducta, con esto cubrimos la salida de las funciones.

Anuncios

En resumen, hoy hemos cubierto como nos devuelven datos las funciones, hemos mencionado que no solo devuelven un dato sino que tambien permiten la devolucion de varios, hemos visto como la funcion devuelve un valor implicito en caso de que nuestra funcion no devuelve nada, hemos visto como return nos saca de una funcion de forma similar a break pero devolviendo un valor y hemos visto como se devuelven valores multiples, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.00