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
= lambda x: x * 2
double print("Double of 5 is:", double(5))
# Uso de map() con una lambda para duplicar cada elemento de una lista
= [1, 2, 3, 4, 5]
numbers = list(map(lambda x: x * 2, numbers))
doubled print("Doubled list:", doubled)
# Uso de filter() con una lambda para seleccionar números pares
= list(filter(lambda x: x % 2 == 0, numbers))
evens print("Even numbers:", evens)
# Uso de reduce() para calcular el producto de una lista de números
from functools import reduce
= reduce(lambda a, b: a * b, numbers)
product 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
<- c(1, 2, 3, 4, 5)
numbers <- lapply(numbers, function(x) x * 2)
doubled print("Doubled list:")
print(unlist(doubled))
# Uso de Filter() con una función anónima para seleccionar números pares
<- Filter(function(x) x %% 2 == 0, numbers)
evens print("Even numbers:")
print(evens)
# Uso de Reduce() para calcular el producto de números
<- Reduce(function(a, b) a * b, numbers)
product 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
- Python para principiantes: tu primer script
- Sintaxis y variables en Python
- Flujo de control y bucles en Python
Feliz programación y disfrute explorando el poder de la programación funcional en Python!
Explorar más artículos
Aquí hay más artículos de la misma categoría para ayudarte a profundizar en el tema.
Reutilización
Cómo citar
@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}
}