Curso de python nivel medio
¿Qué son las funciones de orden superior?
Una función de orden superior es una función que cumple al menos una de estas dos características:
- Toma una o más funciones como argumento.
- Devuelve una función como resultado.
Las funciones de orden superior son poderosas porque permiten tratar las funciones como objetos de primera clase, lo que significa que puedes pasarlas como argumentos, devolverlas desde otras funciones, y asignarlas a variables.
Ejemplo 1: Función de orden superior que toma otra función como argumento
Un ejemplo clásico es la función map(). Esta función toma dos argumentos: una función y un iterable (como una lista). map() aplica la función a cada elemento del iterable y devuelve un nuevo iterable con los resultados.
1# Definir una función que eleva al cuadrado un número 2def al_cuadrado(x): 3 return x * x 4 5# Usar map() como una función de orden superior 6numeros = [1, 2, 3, 4, 5] 7cuadrados = list(map(al_cuadrado, numeros)) 8 9print(cuadrados)Salida de Consola!: [1, 4, 9, 16, 25]
- ¿Qué hace este código?:
- Define la función
al_cuadradoque toma un número y devuelve su cuadrado. - Usa
map()para aplicaral_cuadradoa cada elemento de la listanumeros. list()convierte el resultado demap()en una lista.
- Define la función
Ejemplo 2: Función de orden superior que devuelve otra función
Las funciones de orden superior también pueden devolver funciones. Veamos un ejemplo en el que definimos una función que genera otras funciones:
1def crear_multiplicador(n): 2 def multiplicar(x): 3 return x * n 4 return multiplicar 5 6# Crear una función multiplicadora específica 7duplicar = crear_multiplicador(2) 8triplicar = crear_multiplicador(3) 9 10# Usar las funciones generadas 11print(duplicar(5)) # 5 * 2 = 10 12print(triplicar(5)) # 5 * 3 = 15Salida de Consola!: 10 15
- ¿Qué hace este código?:
- Define una función
crear_multiplicadorque toma un númerony devuelve una nueva funciónmultiplicarque multiplica su argumentoxporn. - Crea dos funciones:
duplicar(que multiplica por 2) ytriplicar(que multiplica por 3). - Usa estas funciones para multiplicar el número
5.
- Define una función
Ejemplo 3: Función filter() como función de orden superior
filter() es otra función de orden superior que toma una función y un iterable como argumentos. filter() aplica la función a cada elemento del iterable y devuelve solo aquellos elementos para los que la función devuelve True.
1# Usar filter() para seleccionar números pares 2numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 3pares = list(filter(lambda x: x % 2 == 0, numeros)) 4 5print(pares)Salida de Consola!: [2, 4, 6, 8, 10]
- ¿Qué hace este código?:
- Usa
filter()con una función lambda que selecciona solo los números pares de la listanumeros. list()convierte el resultado defilter()en una lista.
- Usa
Ejemplo 4: Función reduce() como función de orden superior
La función reduce() (disponible en el módulo functools) aplica una función de forma acumulativa a los elementos de un iterable, reduciéndolos a un solo valor.
1from functools import reduce 2 3# Usar reduce() para calcular el producto de una lista de números 4numeros = [1, 2, 3, 4, 5] 5producto = reduce(lambda x, y: x * y, numeros) 6 7print(producto)Salida de Consola!: 120
- ¿Qué hace este código?:
- Usa
reduce()con una función lambda que multiplica dos números. reduce()aplica esta función de manera acumulativa a todos los elementos de la listanumeros, calculando su producto.
- Usa
Conclusión
Las funciones de orden superior son una herramienta poderosa en Python que te permite escribir código más flexible y reutilizable. Al poder tomar funciones como argumentos y devolver funciones como resultados, puedes crear abstracciones más potentes y manejar operaciones complejas de manera más sencilla. ¡Practica usando funciones de orden superior para ver cómo pueden ayudarte a escribir código más conciso y eficiente!
- Loading...