Dominando las funciones lambda en Python: ejemplos prácticos y mejores prácticas
Dominando las funciones lambda en Python: ejemplos prácticos y mejores prácticas
Las funciones lambda, a menudo llamadas funciones anónimas, permiten escribir pequeñas rutinas desechables en una sola línea. Son útiles en código de estilo funcional, especialmente cuando se usan con map, filter y reduce.
¿Qué es una función lambda?
Una lambda es una función definida con la palabra clave lambda en lugar de def. Acepta cero o más parámetros y devuelve el valor de una única expresión. Como el cuerpo es una expresión, una lambda no puede contener sentencias ni múltiples líneas.
Toda lambda tiene tres partes esenciales:
- La palabra clave
lambda. - Uno o más parámetros (separados por comas).
- Una única expresión que produce el valor de retorno.
Por ejemplo, lambda x, y: x + y suma dos números. Aunque anónima, la lambda puede asignarse a una variable, pasarse a otra función o llamarse inmediatamente.
Cómo escribir una lambda
Sintaxis formal:
lambda p1, p2, ... : expresion
Observa la ausencia de paréntesis alrededor de los parámetros. La expresión puede usar cualquier operación válida de Python.
Ejemplo 1: Sumador simple
sumador = lambda x, y: x + y print(sumador(1, 2)) # → 3
Ejemplo 2: Inspección de un objeto lambda
cadena = 'algún tipo de lambda inútil' print(lambda cadena: print(cadena)) # → <function <lambda> at 0x...>
Aquí, la lambda nunca se llama; el print muestra el objeto función que la lambda devuelve.
Ejemplo 3: Lambda invocada inmediatamente (IIFE)
(lambda x: print(x))('IIFE en acción') # → IIFE en acción
Envolver la definición entre paréntesis y añadir paréntesis después llama a la lambda inmediatamente.
Ejemplo 4: Lambdas vs. funciones regulares
# Función regular
def impresor(arg):
return print(arg)
# Lambda que llama a la función
guru(lambda: impresor('Llamada lambda')) # → Llamada lambda
Ambos fragmentos producen la misma salida, pero la versión lambda es más concisa cuando solo necesitas una llamada puntual.
Uso de lambdas con funciones integradas
Las lambdas brillan cuando se pasan como callbacks a funciones de orden superior. A continuación, patrones comunes.
Expresión de función invocada inmediatamente (IIFE) en Python
(lambda x: x + x)(2) # → 4
Filter
La función filter conserva los elementos que satisfacen un predicado.
secuencias = [10, 2, 8, 7, 5, 4, 3, 11, 0, 1] filtrados = filter(lambda x: x > 4, secuencias) print(list(filtrados)) # → [10, 8, 7, 5, 11]
Map
La función map transforma cada elemento.
secuencias = [10, 2, 8, 7, 5, 4, 3, 11, 0, 1] cuadrados = map(lambda x: x * x, secuencias) print(list(cuadrados)) # → [100, 4, 64, 49, 25, 16, 9, 121, 0, 1]
Reduce
Usa reduce para acumular un único valor a partir de una secuencia.
from functools import reduce secuencias = [1, 2, 3, 4, 5] producto = reduce(lambda x, y: x * y, secuencias) print(producto) # → 120
Cuándo usar (y evitar) lambdas
Las lambdas son ideales para operaciones concisas y puntuales que caben en una sola expresión. Son comunes en construcciones de programación funcional como map y filter.
Sin embargo, evita lambdas demasiado complejas en código de producción. Las one-liners largas e ilegibles pueden dificultar el mantenimiento. En esos casos, una función nombrada con una docstring clara es preferible.
Lambdas vs. funciones regulares
| Característica | Lambda | Función regular |
|---|---|---|
| Sintaxis | lambda x: x + x | def sumar(x): return x + x |
| Cuerpo | Solo una expresión | Múltiples sentencias permitidas |
| Nombrado | Anónima (sin identificador) | Debe tener un nombre |
| Retorno | Implícito desde la expresión | Explícito con return |
| Caso de uso | Lógica corta y desechable | Lógica reutilizable y compleja |
Conclusión
- Usa lambdas para funciones compactas de una sola expresión.
- Prefiere funciones nombradas cuando la lógica es compleja o reutilizable.
- Mantén el código legible; la simplicidad supera a la astucia.
python
- Sobrecarga de operadores en C++: Guía práctica con ejemplos de código
- Funciones en C++ Explicadas con Ejemplos de Código Prácticos
- Dominando argumentos de funciones en Python: Posicionales, por palabra clave y por defecto
- Funciones lambda en Python: Guía práctica de funciones anónimas
- Explicación de Closures en Python: Cómo las Funciones Anidadas Capturan Variables
- Función print() en Python: Guía Práctica con Ejemplos
- Domine el Método strip() de Python: Guía Completa y Ejemplos Prácticos
- Domine str.count() en Python: Cómo Contar Caracteres y Subcadenas con Ejemplos
- Domine el Formateo de Strings en Python con format(): Ejemplos Claros
- Domine el Método String.find() en Python: Sintaxis, Ejemplos y Alternativas
- Función abs() en Python: calcular valores absolutos para números y complejos