Python: Programación funcional
Descubre cómo implementar programación funcional en Python con técnicas avanzadas y ejemplos prácticos. Mejora tu código con funciones puras y más.
Aprende Python GRATIS y certifícateLa programación funcional es un paradigma de programación que trata a las funciones como ciudadanos de primera clase. En Python, este enfoque puede mejorar la legibilidad, la mantenibilidad y la testabilidad del código. A continuación, se presentan algunas técnicas y conceptos clave de la programación funcional en Python.
Funciones puras
Una función pura es aquella que, dado un mismo conjunto de argumentos, siempre devuelve el mismo resultado y no tiene efectos secundarios. Las funciones puras son fundamentales en la programación funcional y facilitan el razonamiento sobre el código.
def suma(a, b):
return a + b
print(suma(2, 3)) # Siempre devuelve 5
Funciones de orden superior
Las funciones de orden superior son aquellas que pueden tomar otras funciones como argumentos y/o devolver funciones como resultado. Esto permite la creación de abstracciones poderosas y reutilizables.
def aplicar_funcion(f, x):
return f(x)
def cuadrado(n):
return n * n
print(aplicar_funcion(cuadrado, 5)) # Devuelve 25
Funciones lambda
Las funciones lambda son funciones anónimas que se definen usando la palabra clave lambda
. Son útiles para funciones cortas y simples.
doble = lambda x: x * 2
print(doble(4)) # Devuelve 8
Funciones map, filter y reduce
Estas funciones son fundamentales en la programación funcional para transformar y reducir colecciones de datos.
map
: Aplica una función a todos los elementos de una colección.
numeros = [1, 2, 3, 4]
dobles = list(map(lambda x: x * 2, numeros))
print(dobles) # Devuelve [2, 4, 6, 8]
filter
: Filtra elementos de una colección según una condición.
numeros = [1, 2, 3, 4]
pares = list(filter(lambda x: x % 2 == 0, numeros))
print(pares) # Devuelve [2, 4]
reduce
: Aplica una función acumulativa a los elementos de una colección para reducirla a un solo valor. Para usarreduce
, es necesario importarla desde el módulofunctools
.
from functools import reduce
numeros = [1, 2, 3, 4]
suma_total = reduce(lambda x, y: x + y, numeros)
print(suma_total) # Devuelve 10
Funciones decoradoras
Los decoradores son una forma de modificar el comportamiento de una función sin cambiar su código. Son útiles para añadir funcionalidades como el registro de llamadas o la validación de argumentos.
def decorador(func):
def envoltura(*args, **kwargs):
print(f"Llamando a {func.__name__}")
return func(*args, **kwargs)
return envoltura
@decorador
def saludo(nombre):
return f"Hola, {nombre}"
print(saludo("Mundo")) # Imprime "Llamando a saludo" y "Hola, Mundo"
Iteradores y generadores
Los iteradores y generadores son fundamentales en la programación funcional para trabajar con secuencias de datos de manera eficiente.
- Iteradores: Objetos que implementan los métodos
__iter__
y__next__
.
class Contador:
def __init__(self, max):
self.max = max
self.n = 0
def __iter__(self):
return self
def __next__(self):
if self.n < self.max:
self.n += 1
return self.n
else:
raise StopIteration
contador = Contador(3)
for num in contador:
print(num) # Imprime 1, 2, 3
- Generadores: Funciones que producen una secuencia de valores usando la palabra clave
yield
.
def generador_contador(max):
n = 0
while n < max:
n += 1
yield n
for num in generador_contador(3):
print(num) # Imprime 1, 2, 3
La programación funcional en Python ofrece una manera elegante y eficiente de escribir código. Implementar estos conceptos puede ayudar a mejorar la calidad y mantenibilidad de tus proyectos.
Lecciones de este módulo de Python
Lecciones de programación del módulo Programación funcional del curso de Python.
Ejercicios de programación en este módulo de Python
Evalúa tus conocimientos en Programación funcional con ejercicios de programación Programación funcional de tipo Test, Puzzle, Código y Proyecto con VSCode.