Programación Funcional en Python

Aprovechamiento de la potencia de las lambdas y las funciones de orden superior

Aprenda a escribir código conciso y potente en Python utilizando técnicas de programación funcional. Este tutorial cubre funciones, expresiones lambda y funciones de orden superior como map, filter y reduce.

Programación
Autor/a
Afiliación
Fecha de publicación

5 de febrero de 2024

Fecha de modificación

9 de mayo de 2025

Palabras clave

Programación funcional en Python, funciones lambda, map filter reducir, funciones de orden superior, Programación funcional en Python

Introducción

La programación funcional es un paradigma que trata a las funciones como ciudadanos de primera clase, lo que significa que las funciones pueden asignarse a variables, pasarse como argumentos y devolverse desde otras funciones. En Python, puede escribir código conciso y expresivo utilizando expresiones lambda y funciones de orden superior como map, filter y reduce. Este tutorial explicará estos conceptos y demostrará cómo pueden utilizarse para escribir código más elegante y eficiente.



Conceptos básicos

Funciones de primer orden

En Python, las funciones son objetos de primera clase. Esto significa que puede: - Asignar funciones a variables. - Pasar funciones como argumentos a otras funciones. - Funciones de retorno de otras funciones.

Funciones Lambda

Las funciones lambda son funciones anónimas definidas con la palabra clave lambda. Se suelen utilizar para funciones cortas y desechables que no son lo suficientemente complejas como para justificar una definición de función completa.

Funciones de Orden Superior

Las funciones de orden superior son funciones que toman otras funciones como argumentos o las devuelven como resultados. Python incorpora varias funciones de orden superior:
- map(): Aplica una función a cada elemento de un iterable.
- filtro(): Filtra los elementos de un iterable basándose en una condición.
- reduce(): Aplica una función de forma acumulativa a los elementos de un iterable (disponible en el módulo functools).

Ejemplos: Python vs. R

A continuación, verá ejemplos que demuestran los conceptos de programación funcional en Python, con una comparación R para el contexto.

# Python: Función lambda y funciones de orden superior

# Uso de una lambda para duplicar un número
double = lambda x: x * 2
print("Double of 5 is:", double(5))

# Uso de map() con una lambda para duplicar cada elemento de una lista
numbers = [1, 2, 3, 4, 5]
doubled = list(map(lambda x: x * 2, numbers))
print("Doubled list:", doubled)

# Uso de filter() con una lambda para seleccionar números pares
evens = list(filter(lambda x: x % 2 == 0, numbers))
print("Even numbers:", evens)

# Uso de reduce() para calcular el producto de una lista de números
from functools import reduce
product = reduce(lambda a, b: a * b, numbers)
print("Product of numbers:", product)
# R: Funciones anónimas y funciones de orden superior

# Uso de una función anónima con lapply para duplicar números
numbers <- c(1, 2, 3, 4, 5)
doubled <- lapply(numbers, function(x) x * 2)
print("Doubled list:")
print(unlist(doubled))

# Uso de Filter() con una función anónima para seleccionar números pares
evens <- Filter(function(x) x %% 2 == 0, numbers)
print("Even numbers:")
print(evens)

# Uso de Reduce() para calcular el producto de números
product <- Reduce(function(a, b) a * b, numbers)
print("Product of numbers:")
print(product)

Conclusión

La programación funcional en Python permite escribir código conciso, expresivo y eficiente. Al aprovechar las funciones de primera clase, las expresiones lambda y las funciones de orden superior como map, filter y reduce, puede realizar operaciones complejas de forma clara y compacta. Experimenta con estos conceptos para ver cómo pueden simplificar tus tareas de codificación y mejorar la legibilidad del código.

Lecturas adicionales

Feliz programación y disfrute explorando el poder de la programación funcional en Python!

Explorar más artículos

Nota

Aquí hay más artículos de la misma categoría para ayudarte a profundizar en el tema.

placeholder

placeholder
No hay resultados
Volver arriba

Reutilización

Cómo citar

BibTeX
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Programación Funcional en Python},
  date = {2024-02-05},
  url = {https://www.datanovia.com/es/learn/programming/python/advanced/functional-programming.html},
  langid = {es}
}
Por favor, cita este trabajo como:
Kassambara, Alboukadel. 2024. “Programación Funcional en Python.” February 5, 2024. https://www.datanovia.com/es/learn/programming/python/advanced/functional-programming.html.