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:

  1. Toma una o más funciones como argumento.
  2. 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_cuadrado que toma un número y devuelve su cuadrado.
    • Usa map() para aplicar al_cuadrado a cada elemento de la lista numeros.
    • list() convierte el resultado de map() en una lista.

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 = 15
Salida de Consola!:
10
15
  • ¿Qué hace este código?:
    • Define una función crear_multiplicador que toma un número n y devuelve una nueva función multiplicar que multiplica su argumento x por n.
    • Crea dos funciones: duplicar (que multiplica por 2) y triplicar (que multiplica por 3).
    • Usa estas funciones para multiplicar el número 5.

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 lista numeros.
    • list() convierte el resultado de filter() en una lista.

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 lista numeros, calculando su producto.

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...