Funciones

Una función es un bloque de código que realiza una operación o tarea específica. En este curso de Python para principiantes ya hemos utilizado algunas funciones que vienen integradas en el intérprete, por ejemplo:

Además de usar funciones ya preparadas, también podemos crear nuestras propias funciones para que ejecuten las tareas que necesitemos. Para ello, Python nos proporciona una sintaxis básica:


def nombre_funcion():
    # Código o lógica de la función
    

La palabra reservada def indica que estamos definiendo una función. Después escribimos el nombre de la función (sin espacios, acentos, caracteres especiales ni palabras reservadas), seguido de paréntesis obligatorios () y, al final, dos puntos :.

Nota: En la línea siguiente a los dos puntos debes escribir el código que pertenecerá a la función. Python determina qué líneas forman parte de la función por su indentación (sangría). Por lo general, se usan 4 espacios o la tecla Tab. Si usas Google Colab o un editor moderno, el espaciado se aplica automáticamente al presionar Enter.

A continuación, un ejemplo de una función que muestra el mensaje ¡Hola!:


def mostrar_mensaje():
    print("¡Hola!")
    

Hasta este punto solo hemos definido la función llamada mostrar_mensaje, pero aún no la hemos ejecutado. El contenido dentro de la función se ejecutará únicamente cuando la llamemos explícitamente escribiendo su nombre y un par de paréntesis:

¡Copiado!

def mostrar_mensaje():
    print("¡Hola!")

mostrar_mensaje()
    

¡Hola!

Nota: Observa que la línea print("¡Hola!") está indentada cuatro espacios hacia la derecha, por lo que pertenece a la función mostrar_mensaje. En cambio, la línea mostrar_mensaje() no está indentada, y por ello Python entiende que esa instrucción ya no forma parte de la función, sino que la está llamando.

Parámetros de una función

Podemos hacer que una función reciba uno o más datos. Para lograrlo, escribimos el nombre del parámetro dentro de los paréntesis al definir la función. Si queremos que reciba más de un dato, simplemente separamos los nombres de los parámetros con comas.

El nombre de cada parámetro puede ser cualquiera, siempre evitando palabras reservadas, espacios o caracteres especiales. La función del ejemplo anterior ahora tendrá un parámetro que recibirá el mensaje que queremos mostrar en pantalla:

¡Copiado!

def mostrar_mensaje(mensaje):
    print(mensaje)

mostrar_mensaje("Buenos días")
mostrar_mensaje("Buenas tardes")
mostrar_mensaje("Buenas noches")
    

Buenos días
Buenas tardes
Buenas noches

Ahora definamos una función llamada suma, que tenga dos parámetros. Cada uno recibirá un número, y la función mostrará en pantalla el resultado de sumarlos:

¡Copiado!

def suma(num_1, num_2):
    resultado = num_1 + num_2
    print("El resultado de la suma es:", resultado)

suma(10, 30)
    

El resultado de la suma es: 40

Nota: En la definición de la función escribimos los dos parámetros separados por comas (num_1, num_2). num_1 y num_2 son solo nombres; pudieron haber sido cualquiera que tú eligieras. Las líneas resultado = num_1 + num_2 y print("El resultado de la suma es:", resultado) están indentadas hacia la derecha, indicando que pertenecen a la función suma. Al usar la función, la llamamos mediante su nombre seguido de paréntesis, y en este caso le enviamos dos valores porque tiene dos parámetros: el valor 10 se almacena en num_1 y el valor 30 en num_2. Si enviamos más o menos parámetros de los que la función espera, Python mostrará un error.

Sentencia return

Las funciones que antes definimosmuestran algo en la panatlla, pero que pasa si ahora quisieramos uargar y valor de la operación que realiza la función en una variable, para esto necesitariamos que la función en lugar de mostrarnos el resultado nos los diera o devolvira. En python la palabra secerevda que se encarga de devolverte un valor es return. Vamos a definir la misma función suma, que reciba dos numeros pero ahora en lugar de mostrar el resultado de la suma, que nos devuelva el resultado.

¡Copiado!

def retorna_suma(num_1, num_2):
    resultado = num_1 + num_2
    return suma

retorna_suma(10, 30)
    
Nota: Al ejecutar esta celda no nos muestra nada en consola, esto porque la función retorna_suma no tiene en ningun lado la intrucción de mostrar en pantalla, si quisieramos que lo mostrara tendriamos que indicarselo.
¡Copiado!

def retorna_suma(num_1, num_2):
    resultado = num_1 + num_2
    return suma

print(retorna_suma(10, 30))
    

40

Nota: print(retorna_suma(10, 30)) le estoy diciendo que me mustre lo que me devuelve la función retorn_suma al pasarle el 10 y el 30

Para que esto quede mucho más claro vamos a comparar dos funciones, una que tenga un valor de retorno y otra que no tenga valor de retorno

¡Copiado!

def muestra_suma(num_1, num_2):
    resultado = num_1 + num_2
    print(resultado)

def retorna_suma(num_1, num_2):
    resultado = num_1 + num_2
    return resultado

resultado_muestra_suma = muestra_suma(10, 30)
resultado_retorna_suma = retorna_suma(10, 30)

print("Lo que guarda la variable resultado_muestra_suma =", resultado_muestra_suma)
print("Lo que guarda la variable resultado_retorna_suma =", resultado_retorna_suma)

    

40
Lo que guarda la variable resultado_muestra_suma = None
Lo que guarda la variable resultado_retorna_suma = 40

Nota: En el código vemos dos funciones que realizan una suma. Sin embargo, se comportan de forma diferente cuando intentamos guardar su resultado en una variable: Cuando llamamos a muestra_suma(10, 30), vemos el número 40 en pantalla, pero eso no significa que la función haya devuelto ese valor: solo lo imprimió. Como no tiene return, Python devuelve automáticamente None, que es lo que queda guardado en la variable resultado_muestra_suma. En cambio, retorna_suma(10, 30) sí devuelve el resultado. Por eso, resultado_retorna_suma guarda correctamente el valor 40, y podemos usarlo después en otras operaciones sin problema.

Ejemplos

Ejercicios