En entregas anteriores explicamos el concepto de función y diseñamos algunos ejemplos sencillos. Vimos cómo utilizar una función para realizar una determinada tarea que presumiblemente volvería a repetirse, permitiéndonos así la reutilización del mismo código dentro del programa. También ilustramos el paso de argumentos, aquellos datos que facilitábamos a la función y que luego serían procesados dentro de su cuerpo.
Todos los ejemplos compartían algo en común: realizaban una tarea concreta (presentar información en pantalla), pero no devolvían ningún valor al ser invocadas.
Ya conoces algunas funciones en Python que devuelven valores. Por ejemplo, recuerda la función int(), que convertía una cadena de caracteres en un número entero, o la función len(), que devolvía la longitud de una cadena.
Los valores que devuelven las funciones pueden ser capturados y esto típicamente se hace asignando una variable, pudiendo formar parte de una expresión numérica.
longitud = len('La casa de la pradera')
Esta instrucción asignaría el valor numérico 21 a la variable longitud.
Los valores que devuelven las funciones no tienen que ser necesariamente numéricos.
Voy a mostrarte cómo hacer para que una función devuelva un valor. Crearemos una que admita como argumento un número natural y que devuelva la suma de todos los naturales que hay hasta él inclusive. Es decir, si, por ejemplo, le facilitamos como argumento un 5, nos devuelva la suma:
1 + 2 + 3 + 4 + 5 = 15
Podríamos hacer un algoritmo para realizar el cálculo empleando un bucle, pero no va ser necesario. Si recordáis las enseñanzas en la escuela, hay una fórmula directa para calcular la suma de todos los términos de una progresión aritmética de diferencia uno:
Ya estamos en condiciones de crear nuestra función:
Abre IDLE o el intérprete interactivo y escribe el siguiente código:
>>> def sumaprogresion(n):
sp=n*(n+1)//2
return sp
La función toma como argumento un valor que almacena en la variable n. Este valor es utilizado para el cálculo de la suma, almacenando el resultado en la variable sp.
Fíjate en la instrucción
return sp
Esta línea es la que indica qué valor devolverá la función. En este ejemplo, lo que contenga la variable sp, que es la que almacena el resultado del cálculo de la suma de la progresión.
Para realizar el cálculo he empleado la división entera (//), en vez de la ordinaria (/). Así evito que se escriba el resultado con un punto decimal.
Probémoslo:
>>> sumaprogresion(5)
15
Recuerda que esto es equivalente a hacer
>>>print(sumaprogresion(5))
En el intérprete interactivo te puedes ahorrar el print, pero no así cuando escribas un programa fuera de él.
Veamos otro ejemplo:
>>> print('La suma de los 1000 primeros números naturales es', sumaprogresion(1000))
La suma de los 1000 primeros números naturales es 500500
Así de simple.
Javier Montero
http://elclubdelautodidacta.es/wp/2011/12/python-capitulo-26-funciones-que-devuelven-valores/
El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)
El Club del Autodidacta
Buscaba información sobre el tema return/print y esto me lo ha aclarado todo.
Siendo un novatillo, estaba haciendo verdaderas burradas con globales para conseguir el mismo efecto!!
Suele pasar: cuando uno se reconoce haciendo burradas es que con toda probabilidad hay una manera más elegante de hacer lo mismo. 😉
¡Gracias por pasarte!
Hola, yo quiero definir una funcion que me retorne algunos valores y con estos usarlos en otra funcion, de esta forma:
valorglobal=input(«ingrese valor global»)
def F(valor1,valor2) :
valor3 = valor1+valor2
valor4 = valor1 * valor2
return valor3, valor4
#Luego usarlos para otra funcion
def F2(valor3,valor4, valorglobal):
valor5= valor3* valorglobal
valor6= valor4* valor5
return valor6
#luego impimir el resultado de F2()
print valor6
Necesito hacerlo asi porque es un programa con un menu de 2 opciones. Cada opcion usa la misma funcion para pedir valores, luego la opcion 1 tambien usa otra funcion F2() para hacer una cosa con esos valores. La opcion 2 usa otra funcion F3() con esos mismos valores que ingreso el usuario.
Ayudaa