Funciones de orden superior
Las funciones de orden superior en Python son funciones que pueden aceptar otras funciones como argumentos o devolver funciones como resultado. Este concepto es fundamental en la programación funcional y permite escribir código más flexible y modular. Aquí tienes ejemplos de cómo usar funciones de orden superior en Python:
Ejemplo 1: Función que toma una función como argumento
def aplicar(funcion, lista):
resultados = []
for elemento in lista:
resultado = funcion(elemento)
resultados.append(resultado)
return resultados
def cuadrado(x):
return x ** 2
def cubo(x):
return x ** 3
numeros = [1, 2, 3, 4, 5]
# Aplicar la función cuadrado a cada elemento de la lista
resultados_cuadrado = aplicar(cuadrado, numeros)
print(resultados_cuadrado) # Salida: [1, 4, 9, 16, 25]
# Aplicar la función cubo a cada elemento de la lista
resultados_cubo = aplicar(cubo, numeros)
print(resultados_cubo) # Salida: [1, 8, 27, 64, 125]
En este ejemplo, la función aplicar
toma dos argumentos: una función (cuadrado
o cubo
) y una lista de números. Luego, aplica la función proporcionada a cada elemento de la lista y devuelve una lista de resultados.
Ejemplo 2: Función que devuelve una función
def crear_funcion_potencia(exponente):
def funcion_potencia(x):
return x ** exponente
return funcion_potencia
cuadrado = crear_funcion_potencia(2)
cubo = crear_funcion_potencia(3)
print(cuadrado(2)) # Salida: 4
print(cubo(2)) # Salida: 8
En este ejemplo, la función crear_funcion_potencia
toma un argumento exponente
y devuelve una función que calcula una potencia específica. Luego, creamos funciones cuadrado
y cubo
utilizando crear_funcion_potencia
con diferentes exponentes y las usamos para calcular potencias.
Ejemplo 3: Función filter
La función filter
es una función de orden superior incorporada en Python que toma una función de prueba y una secuencia como argumentos y devuelve una nueva secuencia que contiene solo los elementos para los cuales la función de prueba devuelve True
.
def es_par(numero):
return numero % 2 == 0
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
pares = filter(es_par, numeros)
pares_lista = list(pares)
print(pares_lista) # Salida: [2, 4, 6, 8, 10]
En este ejemplo, la función es_par
se pasa como argumento a la función filter
, que filtra la lista numeros
y devuelve una nueva lista con los números pares.
Las funciones de orden superior son una parte fundamental de la programación funcional en Python y proporcionan una manera poderosa de escribir código más legible y reutilizable. Puedes crear funciones que acepten funciones personalizadas para adaptar su comportamiento o usar funciones incorporadas como filter
, map
y reduce
para operar en secuencias de datos de manera eficiente.