En Python, la palabra clave lambda te permite crear funciones anónimas de una sola expresión para escribir transformaciones y filtros inline.
Estas funciones son ideales cuando requieres encapsular una lógica breve y desecharla inmediatamente después, como sucede al ordenar colecciones, transformar datos o definir callbacks.
Sintaxis básica
Una función lambda se compone de tres partes:
- La palabra clave
lambda - Una lista opcional de argumentos separados por comas
- Una única expresión cuyo resultado se devuelve de forma implícita
Esta es la sintaxis:
lambda arguments: expression
Al igual que las funciones creadas con def, las lambdas aceptan valores por defecto, argumentos posicionales y hasta *args o **kwargs. Lo que no puedes hacer es escribir varias sentencias dentro del cuerpo de una lambda porque únicamente admiten una expresión.
Ejemplos prácticos
A continuación algunos ejemplos:
>>> multipliers = []
>>> for n in range(3):
... multipliers.append(lambda x, factor=n: x * factor)
...
>>> multipliers[2](4)
8
En este ejemplo, cada lambda captura el valor de n mediante un parámetro con valor por defecto. Al final del ciclo for obtienes una lista de funciones a las que puedes pasar un valor para multiplicarlo por la n correspondiente.
Las lambdas brillan cuando las combinas con funciones que aceptan otras funciones como argumento:
>>> words = ["SALUDO", "mañana", "funciones"]
>>> sorted(words, key=lambda word: word.lower())
['funciones', 'mañana', 'SALUDO']
>>> numbers = [3, -2, 0, 11, -7]
>>> list(filter(lambda n: n >= 0, numbers))
[3, 0, 11]
>>> from functools import reduce
>>> reduce(lambda acc, n: acc + n, numbers, 0)
5
sorted()usa lalambdapara normalizar cada elemento antes de comparar.filter()filtra la lista para mantener solo los números positivos.reduce()acumula los valores sin necesidad de definir una función separada.
Usos de lambda
Los casos de uso más comunes de la palabra clave lambda incluyen los siguientes:
- Crear transformaciones breves dentro de funciones de orden superior como
map(),filter(),sorted()y similares. - Definir claves o métricas inline para ordenar, agrupar o seleccionar datos.
- Escribir callbacks o manejadores temporales en APIs que esperan funciones, como eventos en interfaces gráficas o hooks de librerías.
Resumiendo
La palabra clave lambda te ayuda a empaquetar lógica limitada de forma concisa sin necesidad de un identificador o nombre de función. Cuando la legibilidad, las pruebas o la trazabilidad sean prioritarias, prefiere def y reserva las lambdas para los casos puntuales donde brilla su brevedad.
Conocer y emplear esta palabra clave te ayuda a crear funciones rápidas y breves que operan con un tiempo de vida limitado.