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.
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.
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.
Hay algunos detalles respecto a los parámetros de una función, veamos:
Debes tener en cuenta dos cosas importantes con la sentencia return:
Veamos algunos ejemplos.
Veamos algunos ejemplos prácticos de funciones en Python.
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.
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.
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.
Debido a que el return es opcional, pueden existir entonces "funciones" que no retornen ningún valor. Veamos un ejemplo:
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.
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.
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:
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 4 años