Funciones en Python: definir, llamar y devolver valores
Esta lección es una traducción del original en inglés.Read in EnglishAvisar de un error de traducción
Imagina que tienes tu receta favorita de panqueques. Cada domingo por la mañana sigues los mismos pasos: mezclar la harina, romper los huevos, verter la masa, darles la vuelta. No reinventas la receta cada vez: sigues la que ya conoces.
Las funciones de Python se comportan exactamente como las recetas. Escribes las instrucciones una vez, les pones un nombre y luego llamas a ese nombre cada vez que necesitas que esas instrucciones se vuelvan a ejecutar. Se escriben una vez y se usan donde quieras.
En este tutorial aprenderás a crear tus propias funciones, a pasarles datos y a obtener resultados de ellas. Al terminar, escribirás código limpio y reutilizable como un auténtico programador.
Cómo definir tu primera función
Para crear una función en Python, usas la palabra clave def, seguida de un nombre, unos paréntesis y dos puntos. Todo lo que está indentado debajo pertenece a esa función.
(sin salida)
Si ejecutas el código de arriba, no pasa nada. Eso es porque definir una función es como escribir una receta. No se cocina nada hasta que de verdad sigues los pasos.
Para ejecutar la función, la llamas escribiendo su nombre seguido de paréntesis:
Hello there! Welcome to Python.
Ahora sí ves la salida. Los paréntesis () después de greet son lo que le dice a Python que ejecute la función. Sin ellos, Python solo mira la receta sin cocinar nada.
Puedes llamar a una función tantas veces como quieras. Cada llamada ejecuta todo el código de la función, de arriba abajo.
Hello there! Hello there! Hello there!
¿Qué son los parámetros y los argumentos?
Nuestra función greet() siempre dice lo mismo. Es como una receta que solo sabe hacer panqueques sencillos. ¿Y si quieres panqueques de arándanos? Necesitas una forma de pasarle ingredientes.
En Python, le pasas datos a una función mediante parámetros. Un parámetro es un nombre de variable que aparece entre los paréntesis de la definición de la función. Cuando llamas a la función, el valor real que le envías se llama argumento.
Hello, Alice! Hello, Bob!
Aquí, name es el parámetro: un hueco por rellenar. Cuando llamamos a greet('Alice'), la cadena 'Alice' es el argumento: el valor real que rellena ese hueco.
¿Cómo funcionan los valores de retorno?
Hasta ahora, nuestras funciones solo imprimen cosas. Pero la mayoría de las veces quieres que una función calcule algo y te devuelva el resultado. Eso es lo que hace return.
Piénsalo así: print() es como gritar la respuesta en voz alta. return es como escribir la respuesta en un papel y entregárselo a quien te la pidió.
8
La instrucción return hace dos cosas: envía un valor de vuelta al lugar donde se llamó a la función y sale de la función de inmediato. El código que haya después de return dentro de la misma función no se ejecutará.
8
def add(a, b):
print(a + b)
# Can't reuse the result
add(3, 5)def add(a, b):
return a + b
# Can store, reuse, combine
result = add(3, 5)
print(result * 2)Usar varios parámetros
Las funciones pueden aceptar tantos parámetros como necesites. Sepáralos con comas. Al llamar a la función, los argumentos se asignan a los parámetros en orden: el primer argumento va al primer parámetro, y así sucesivamente.
Alice is 25 years old and lives in New York. Bob is 30 years old and lives in London.
El orden importa. Si cambias de lugar los argumentos, obtendrás resultados sin sentido o un error. introduce(25, 'Alice', 'London') intentaría usar 25 como nombre.
¿Qué son los valores predeterminados de los parámetros?
A veces quieres que un parámetro tenga un valor de respaldo: un valor predeterminado razonable que se usa cuando quien llama a la función no da ninguno. Lo defines con un signo = en la definición.
Hello, Alice! Hey, Bob!
Cuando llamamos a greet('Alice'), el parámetro greeting usa su valor predeterminado, 'Hello'. Cuando llamamos a greet('Bob', 'Hey'), reemplazamos el valor predeterminado por 'Hey'.
¿Una función puede llamar a otras funciones?
¡Claro que sí! De hecho, es una de las ideas más potentes de la programación. Puedes crear funciones pequeñas, centradas en una sola tarea, y luego combinarlas como si fueran piezas de construcción.
25
Aquí, sum_of_squares llama dos veces a square. Cada función pequeña hace un trabajo sencillo. Juntas, resuelven un problema más grande. Este enfoque hace que tu código sea más fácil de leer, probar y corregir.
7 is odd 10 is even
Ejercicios de práctica
Escribe una función llamada say_hello que reciba un parámetro name e imprima Hello, <name>! (con el signo de exclamación). Por ejemplo, say_hello('World') debe imprimir Hello, World!.
Lee con atención el código de abajo. ¿Qué va a imprimir? Escribe la salida exacta.
def double(x):
return x * 2
result = double(7)
print(result)
print(double(3))Escribe una función llamada area que reciba width y height como parámetros y devuelva su producto (el área de un rectángulo). No imprimas nada: devuelve el valor.
Esta función debería devolver el mayor de dos números, pero tiene un error. Encuéntralo y corrígelo para que bigger(3, 7) devuelva 7 y bigger(10, 5) devuelva 10.
def bigger(a, b):
if a > b:
return a
return b
return aUn momento: en realidad la lógica parece correcta, pero la prueba falla. Fíjate bien en cada línea.
Escribe una función llamada celsius_to_fahrenheit que reciba una temperatura en grados Celsius y la devuelva convertida a Fahrenheit. La fórmula es: F = C * 9/5 + 32. Devuelve el resultado como un float, un número decimal (la fórmula ya produce uno).
Escribe una función llamada get_grade que reciba una puntuación numérica score (0-100) y devuelva una nota en forma de letra, como cadena:
'A''B''C''D''F'