Show code cell source
import os
# Por precaución, cambiamos el directorio activo de Python a aquel que contenga este notebook
if "PAD-book" in os.listdir():
os.chdir(r"PAD-book/Laboratorio-Computacional-de-Analytics/S2 - Funciones, manejo de archivos y visualizacion/S2.TU1/")
Funciones#
En programación, una función es un bloque de código dedicado a cumplir una tarea específica, el cual puede ser reutilizado a lo largo de un programa. Una de las ventajas más notorias de las funciones es que evitan repetir un mismo bloque de código en diferentes partes del mismo programa. Adicionalmente, las funciones ayudan a desarrollar código ordenado y estructurado, además de permitir flexibilidad en el desarrollo de algoritmos. En el contexto de análisis de datos nos relacionamos con funciones, ya sea que usemos las que están disponibles en software especializado o que las programemos para algún propósito específico.
En este tutorial implementaremos funciones en lenguaje Python.
Requisitos#
Para este tutorial necesitarás:
Utilizar estructuras de datos (listas, tuplas, diccionarios).
Utilizar estructuras de control (
if
,for
,while
).
Objetivos#
Al final de este tutorial podrás:
1. Implementar funciones e integrarlas con condicionales y ciclos.
2. Implementar funciones anónimas e integrarlas con condicionales.
1. Funciones#
En general, una función recibe uno o más elementos como entrada, efectúa ciertas operaciones a partir ellos y retorna uno o más elementos como salida. Así, podemos entender las funciones como una composición de tres partes de la siguiente manera:
Parámetros: elementos recibidos para llevar a cabo las operaciones definidas en el cuerpo de la función. Estos pueden ser incluso estructuras de datos.
Cuerpo: sección donde definimos las operaciones que se llevarán a cabo con el fin de producir un resultado. Aquí podemos definir variables e incluir estructuras de control.
Retorno: resultado de ejecutar la función.
También se da el caso en que una función no recibe parámetros o no genera un retorno; en este caso, el propósito de la función suele ser modificar un archivo o variable global.
1.1. Sintaxis general#
La sintaxis de una función en Python es la siguiente:
def nombre_de_la_funcion(parametros):
bloque_codigo
return resultado
Ejemplo 1#
Un empresario requiere una calculadora para sumar el ingreso bruto que producen sus empresas: 453 USD (BeEducation) y 734 USD (WeTravel). Para esto, creemos una función que sume dos números ingresados por parámetro.
def suma(x,y):
respuesta = x + y
return respuesta
resp = suma(453,734)
print("La suma de los ingresos brutos es: " + str(resp) + " USD")
La suma de los ingresos brutos es: 1187 USD
Ejemplo 2#
Un empresario quiere calcular el bono de fin de año de sus empleados, el cual consiste en duplicar su salario para el mes de Diciembre. Para esto, cuenta con una lista de los salarios de todos sus empleados. Creemos una función que tome una lista ingresada como parámetro y duplique el valor de cada uno de sus elementos.
def calcular_bono(lista):
for i in range(len(lista)):
lista[i] = lista[i]*2
return lista
lista = [1200,3400,2300,1800]
calcular_bono(lista)
[2400, 6800, 4600, 3600]
1.2. Parámetros opcionales#
En ocasiones, establecemos valores predeterminados para uno o más parámetros de una función. Para esto, utilizamos la sintaxis nombre_parámetro = valor
, dónde nombre_párametro
es el nombre del parámetro cuyo valor deseamos predeterminar y valor
el valor predeterminado. Es importante recalcar que el parámetro solo tomará el valor predeterminado si no se ingresa un valor diferente para este.
A continuación presentamos un ejemplo de una función que recibe parámetros opcionales.
Ejemplo 3#
En este ejemplo definiremos una función que nos permita sumar o multiplicar dos números. Está función tendrá como parámetros los dos números que se quieren operar y un tercer parámetro opcional que definirá si los números se sumaran o se multiplicaran.
def operar(x, y, tipo_operacion = '+'):
respuesta = 0
if tipo_operacion == '+':
respuesta = x + y
elif tipo_operacion == '*':
respuesta = x * y
return respuesta
Como podemos ver, dado que el parámetro opcional esta inicializado por defecto en '+'
, si no ingresamos un tercer parámetro, la función sumará los dos números.
operar(2,3)
5
Por el contrario, si queremos hacer uso del parámetro opcional e ingresamos el valor de '*'
, la función multiplicará los dos números:
operar(2, 3, tipo_operacion = '*')
6
2. Funciones anónimas (lambda
)#
Las funciones anónimas son un tipo de función ampliamente utilizado en la programación y nos permiten comprimir una función en una linea de código. Sin embargo, no pueden tener más de una expresión dentro de su cuerpo. Este tipo de funciones se pueden o no asignar a una variable, de allí que sean llamadas funciones anónimas. En la práctica, las funciones anónimas nos ayudan a escribir código de manera concisa y ordenada. Se conocen como funciones lambda
ya que Python utiliza esta palabra reservada para declararlas.
2.1. Sintaxis general#
Función asignada a una variable:
nombre_funcion = lambda parametros: código_funcion
Función sin asignar:
lambda parametros: código_funcion
Ejemplo 4#
Retomemos el ejemplo del empresario que desea sumar los ingresos brutos de sus empresas. Para esto, creemos una función anónima para solucionar su requerimiento.
suma_lambda = lambda x,y: x + y
resp1 = suma_lambda(1,2)
print("La suma de 1 y 2 es : " + str(resp1))
resp2 = suma_lambda(5,6)
print("La suma de 5 y 6 es : " + str(resp2))
La suma de 1 y 2 es : 3
La suma de 5 y 6 es : 11
Ejemplo 5#
El ministerio de transporte desea conocer el último dígito de la placa de un vehículo es par o impar con el fin de aplicar restricciones a la movilidad. Para esto, creemos una función anónima que permita determinar si un número ingresado por parámetro es par o impar.
paridad = lambda num: num % 2 == 0
print("¿El número 745 es par? " + str(paridad(745)))
print("¿El número 182 es par? " + str(paridad(182)))
¿El número 745 es par? False
¿El número 182 es par? True
2.2. Funciones anónimas con condicional#
Las funciones anónimas también pueden contener un condicional, el cual nos permite modelar diversos casos dentro de la función.
Sintaxis general#
nombreFuncion = lambda parametros: códigoFunción if condicion else códigoFunción2
Ejemplo 8#
El gerente de un banco desea conocer el aforo de su sucursal en un momento dado. Creemos una función anónima que revise la capacidad del banco, dada una lista de personas que se encuentran en la fila (lista personas
). El banco tiene capacidad para 10 clientes en fila. La función retornará 'Banco con capacidad'
si el tamaño de la lista de personas es menor que la capacidad del banco. De lo contrario, la función retornará 'Banco lleno'
.
personas = ['Carlos', 'Juan', 'Laura', 'Luisa','Jorge','Jhon','Ana']
estadoBanco = lambda lista: "Banco con capacidad." if len(lista) < 10 else "Banco lleno."
estadoBanco(personas)
'Banco con capacidad.'
Créditos#
Autores: Camilo Falla Moreno, Juan David Reyes, Alejandro Mantilla Redondo,Diego Alejandro Cely Gómez
Fecha última actualización: 09/09/2024, Revisado por: Jose Fernando Barrera