Aprende a crear funciones en Python. Mejorar la calidad de tus programas en con funciones
Las funciones son una herramienta indispensable al momento de programar en Python (y cualquier otro lenguaje de programacion). Tanto las funciones creadas propiamente por ti como las que son proporcionadas por el lenguaje mismo, permiten automatizar tareas que usualmente se repiten en el código. Al crear funciones en Python y en cualquier programa, mejoramos la modularidad del códio, pues se tienen diferentes componentes (funciones) que se encargan de tareas puntuales. Al mejorar la modularidad, mejoramos la calidad de nuestros programas y nuestra vida como programadores será mucho más sencilla.
Al usar funciones, estamos creando componentes de nuestros programas en Python que pueden ser utilizados en cualquier momento para llevar a cabo una tarea común, especialmente, una tarea que requerimos utilizar con frecuencia y que se repite a menudo. Por ejemplo, una función para abrir, otra para cerrar, otra para actualizar, otra para saludar, otra para validar datos, y un largo etcétera.
Funciones en Python:
Las funciones son un conjunto de procedimiento encapsulados en un bloque, usualmente reciben parámetros, cuyos valores se utilizan para efectuar operaciones y opcionalmente retornar un valor. Esta definición proviene de la definición de función matemática la cual posee un dominio y un rango, es decir, un conjunto de valores que puede tomar y un conjunto de valores que puede retornar luego de cualquier operación. Sin embargo, en el caso de Python, no siempre debes retornar un valor en tus funciones.
Declarando funciones en Python
La sintaxis para declarar una función es muy simple, veamos:
def nombreFuncion([parámetro,[nombreParámetro]...]):
##
# Bloque de instrucciones
##
[return valor[, otroValor]]
Nota: Los elementos que se muestran entre "[]", son opcionales. En este caso, tanto la serie de parámetros de la función, como el return, son opcionales.
Una función en Python, debe tener un nombre, indicado justo después de la instrucción def, para poder identificarla y llamarla durante la ejecución. Después, al interior de paréntesis, podemos poner los parámetros. Luego de la definición de la "firma" de la función, se indica su funcionamiento, con su respectiva indentación como es habitual en Python. No olvidar los dos puntos para indicar el final de la línea que define a la firma de la función.
Acerca de los parámetros
Hay algunos detalles respecto a los parámetros de una función, veamos:
- Una función pueden tener una cantidad cualquier de parámetros, es decir, pueden tener cero, uno, tres, diez, cien o más parámetros. Aunque habitualmente no suelen tener más de 4 o 5.
- Si una función tiene más de un parámetro cada uno de ellos debe ir separado por una coma.
- Los parámetros de una función también tienen un nombre que los identifica.
Consejos acerca de return
Debes tener en cuenta dos cosas importantes con la sentencia return:
- Cualquier instrucción que se encuentre después de la ejecución de return NO será ejecutada. Es común encontrar funciones con múltiples sentencias return al interior de condicionales, pero una vez que el código ejecuta una sentencia return lo que haya de allí hacia abajo no se ejecutará.
- En python, return puede devolver cero o muchos valores. Si es más de uno, se separan por coma.
Veamos algunos ejemplos.
Ejemplos de funciones en Python
Veamos algunos ejemplos prácticos de funciones en Python.
Ejemplo 1:
def sumar(): #Función sin parámetros
suma = 50 + 10
return suma #Acá termina la ejecución
return 50 + 10 #Este return nunca se ejecutará
# Intenta intercambiar la línea 3 con la 5
x = 10 # Esta línea nunca se ejecutará
Como puedes ver es un ejemplo sencillo. Si ejecutas ese programa, la función te retornará el valor de suma que es 60 (50 + 10). Las líneas posteriores no se ejecutarán nunca, aunque no generan error alguno, no tienen utilidad. Puedes notar que para este caso es lo mismo haber escrito return suma que escribir return 50 + 10. Ambas líneas funcionan equivalentemente.
Ejemplo 2:
def caracter(n): #Función con un parámetro
if n == 0: # Usamos el parámetro de la función
return 'a' # Si n es cero retorna a
# Notar que de aquí para abajo no se ejecuta nada más
return 'x' # Este return solo se ejecuta cuando n NO es cero
Aquí hicimos uso de múltiples sentencias return y aprovechamos la característica de que al ser ejecutadas finalizan inmediatamente la ejecución de la parte restante de la función. De este modo podemos asegurar que la función retornará 'a' únicamente cuando el valor del parámetro n sea cero y retornará un 'x' en los demás casos.
Ejemplo 3:
def mensaje(n, mensaje): #Función con dos parámetros
if(n == 0): #Usamos el parámetro en la función
print(mensaje) #Mostramos el mensaje
return 1
return 0 #Este return sólo se ejecuta cuando n NO es cero
Aquí ya tenemos una función que recibe dos parámetros, uno de ellos es usado en el condicional y el otro para mostrar su valor por pantalla con print, esta vez, retornamos valores enteros 0 y 1, según fuera el valor del parámetro n.
Funciones que no retornan valores
Debido a que el return es opcional, pueden existir entonces "funciones" que no retornen ningún valor. Veamos un ejemplo:
Ejemplo de función sin return
def procedimiento(n, nombre):
if(n == 0):
print("hola", nombre)
return
print("adiós", nombre)
De este ejemplo podemos ver que ya no se retorna un valor. Sin embargo, nada nos impide hacer uso de return, para interrumpir la ejecución de la función en ese punto.
Invocando funciones y procedimientos en Python
Ya hemos visto cómo se crean y cómo se ejecutan las funciones en Python, ahora veamos cómo hacemos uso de ellas.
nombreFuncion([argumento1,[argumento2]...])
Como puedes notar es bastante sencillo invocar o llamar funciones en Python (de hecho en cualquier lenguaje actual). Necesitas el nombre de la función y enviarle el valor de los parámetros (los argumentos). Hay que hacer algunas salvedades respecto a esto.
Detalles para invocar funciones
- El nombre de la función debe coincidir exactamente al momento de invocarla.
- El orden de los parámetros debe coincidir. Hay que tener cuidado al momento de enviar los argumentos, debemos hacerlo en el mismo orden en el que fueron declarados.
- Cada argumento enviado también va separado por comas.
- Si una función no recibe argumentos, simplemente no ponemos nada al interior de los paréntesis, pero SIEMPRE debemos poner los paréntesis.
- El valor retornado por una función puede ser asignado a una variable.
- Una función puede llamar a otra dentro de sí misma o incluso puede ser enviada como argumento de otra.
Ejemplos de uso de funciones
En el siguiente código vamos a hacer un llamado a algunas de las funciones que declaramos anteriormente.
#Llamando a una función sin argumentos
sumar()
#Asignando el valor retornado a una variable
respuesta = mensaje(1, "hola")
# Usando una función como argumento de otra
procedimiento(mensaje(1, "hola"), "Juan")
En el código anterior vemos cómo se asigna el valor retornado por la función a la variable 'respuesta' y finalmente, vemos cómo hemos usado el valor retornado por 'mensaje' como parámetro de la función llamada 'procedimiento'. Adicionalmente, al comienzo, vemos cómo llamar a una función que no recibe argumentos.
Nota: Es importante que la definición de cada una se esas funciones haga parte de tu programa, y que esas definiciones aparezcan antes de que sean usadas. De ese modo, un código completo para tu programa, sería el siguiente:
Código completo funcional
def sumar(): #Función sin parámetros
suma = 50 + 10
return suma #Acá termina la ejecución
return 50 + 10 #Este return nunca se ejecutará
# Intenta intercambiar la línea 3 con la 5
x = 10 # Esta línea nunca se ejecutará
def mensaje(n, mensaje): #Función con dos parámetros
if(n == 0): #Usamos el parámetro en la función
print(mensaje) #Mostramos el mensaje
return 1
return 0 #Este return sólo se ejecuta cuando n NO es cero
def procedimiento(n, nombre):
if(n == 0):
print("hola", nombre)
return
print("adios", nombre)
#Llamando a una función sin argumentos
suma = sumar()
print(suma)
#Asignando el valor retornado a una variable
respuesta = mensaje(1, "hola")
print(respuesta)
# Usando una función como argumento de otra
procedimiento(mensaje(1, "hola"), "Juan")
Así tendrás todas las definiciones disponibles para usarlas en tu programa.
Muy bien, eso ha sido todo en este artículo. No te olvides de ver las demás secciones del curso y mejorar tus conocimientos. También puedes dejar tus comentarios y con gusto te responderé.
La última actualización de este artículo fue hace 3 años