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:
print(), que muestra en pantalla el contenido que se coloca entre los paréntesis.
type(), que devuelve el tipo de dato de la información que reciba como argumento.
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 :.
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:
def mostrar_mensaje():
print("¡Hola!")
mostrar_mensaje()
¡Hola!
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.
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:
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:
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
(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.
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.
def retorna_suma(num_1, num_2):
resultado = num_1 + num_2
return suma
retorna_suma(10, 30)
retorna_suma no tiene en ningun lado la intrucción de mostrar en pantalla, si quisieramos que lo mostrara tendriamos que indicarselo.
def retorna_suma(num_1, num_2):
resultado = num_1 + num_2
return suma
print(retorna_suma(10, 30))
40
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
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
muestra_suma() calcula la suma y la muestra en pantalla con print(), pero no devuelve un valor.retorna_suma() calcula la suma y devuelve el resultado mediante return.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.