Lección 18 de 45 · Funciones

Parámetros y return

Haz que una misma función trabaje con datos diferentes y devuelva resultados que el resto del programa pueda reutilizar.

Paso a pasoFlujo de datosAvanza a tu ritmo
Índice · Lección 18/45
La función deja de ser fija

La lección anterior agrupaba una tarea bajo un nombre. Ahora vas a convertir esa tarea en algo más útil: una función que recibe datos, trabaja con ellos y entrega un resultado.

Usa este recorrido mental durante toda la lección: entrada → trabajo → resultado.

Evidencia de aprendizaje

Seguir el dato que entra por parámetros, se transforma y vuelve mediante return.

El parámetro es el nombre de una entrada

Una función, muchos nombres
def saludar(nombre):
    print(f"Hola, {nombre}")

saludar("Luna")
saludar("Pablo")

nombre es el parámetro: el nombre que usa la función para referirse al dato recibido. "Luna" y "Pablo" son argumentos: los valores concretos usados en cada llamada.

No hace falta obsesionarse con los dos términos. Lo importante es entender que una misma definición puede trabajar con valores diferentes.

return entrega un valor al lugar donde se hizo la llamada

Producir un resultado reutilizable
def doble(numero):
    return numero * 2

resultado = doble(6)
print(resultado)

La llamada doble(6) se convierte en el valor 12. Puedes guardarlo, compararlo, sumarlo o pasarlo a otra función.

Piensa en sustitución: cuando una función devuelve 12, imagina que la llamada queda sustituida por 12 en la expresión que la contiene.

Mostrar un valor y devolver un valor resuelven problemas distintos

Dos funciones que parecen parecidas
def mostrar_doble(numero):
    print(numero * 2)

def calcular_doble(numero):
    return numero * 2

La primera enseña el número en pantalla. La segunda lo entrega al programa. Si después necesitas hacer calcular_doble(5) + 3, necesitas un return.

¿Qué devuelve una función sin return?

Python devuelve None de forma implícita. Que una función haya impreso algo no significa que haya devuelto ese valor.

Sigue el dato hasta que vuelve a la llamada

100, 20→ parámetrosprecio, descuento→ cálculo80→ returnprecio_final

Predicción: si una función solo hace print(80) y después escribes resultado = funcion(), resultado vale None. Mostrar algo y devolverlo son acciones distintas.

Haz que la función devuelva el precio con descuento y usa el valor retornado en otra expresión.

Salida esperada
80
85
retorno.py
La salida aparecerá aquí.

Necesito una pista
  • El cálculo ya existe. Sustituye print(...) dentro de la función por return ....
  • Después la llamada produce un valor que puede guardarse y reutilizarse.
Ver una solución razonada
def aplicar_descuento(precio, descuento):
    return precio - descuento

precio_final = aplicar_descuento(100, 20)
print(precio_final)
print(precio_final + 5)

Un método sencillo para diseñar funciones pequeñas

  1. Escribe qué información necesita la tarea: esos datos pueden convertirse en parámetros.
  2. Decide qué cálculo o transformación debe realizar.
  3. Pregunta qué valor necesita recibir el resto del programa: ese suele ser el return.

Si una función empieza a necesitar demasiadas entradas o intenta hacer varias tareas distintas, quizá convenga dividirla. No necesitas hacerlo perfecto desde el principio.

La trampa de imprimir dentro de todas las funciones

Cuando estás aprendiendo, print() parece resolver todo porque ves un resultado inmediatamente. Pero una función de cálculo suele ser más útil si devuelve el resultado y deja que otra parte del programa decida si imprimirlo, guardarlo o combinarlo.

Antes de estudiar el ámbito

Si puedes mirar una función y señalar sus entradas, el trabajo que realiza y el valor que devuelve, ya tienes el modelo correcto.