Funciones lambda en Python: guía con ejemplos

Publicado el: 11/07/2026
Tempo de leitura: 4 minutos
Logo lambda usado no Half-Life

Las funciones lambda son funciones anónimas y breves creadas con la palabra clave lambda. Se utilizan cuando una operación pequeña debe pasarse como argumento, especialmente para ordenar, transformar o filtrar datos. Son útiles, pero no deben sustituir a todas las funciones creadas con def.

Sintaxis básica

Una lambda recibe parámetros, contiene una sola expresión y devuelve automáticamente el resultado:

doble = lambda numero: numero * 2
print(doble(5))

La forma equivalente con def sería:

def doble(numero):
    return numero * 2

Para revisar parámetros y resultados, consulta la guía de funciones en Python y el artículo sobre return.

Ordenar con una clave personalizada

Uno de los usos más claros aparece con sorted:

usuarios = [
    {"nombre": "Ana", "edad": 31},
    {"nombre": "Luis", "edad": 24},
    {"nombre": "Marta", "edad": 28},
]

ordenados = sorted(
    usuarios,
    key=lambda usuario: usuario["edad"]
)

La lambda extrae la edad de cada diccionario. Al ser una operación local y sencilla, mantiene el código compacto.

Ordenar por varios criterios

La clave puede devolver una tupla:

productos = [
    ("Teclado", 50),
    ("Ratón", 20),
    ("Monitor", 200),
]

ordenados = sorted(
    productos,
    key=lambda producto: (producto[1], producto[0])
)

Python ordena primero por precio y después por nombre.

Usar lambda con map

map aplica una función a cada elemento:

numeros = [1, 2, 3, 4]
cuadrados = list(map(lambda n: n ** 2, numeros))

En muchos casos, una comprensión de lista resulta más legible:

cuadrados = [n ** 2 for n in numeros]

Elige la forma que exprese mejor la intención. No uses lambda solo por reducir líneas.

Usar lambda con filter

filter conserva elementos para los que la función devuelve un valor verdadero:

numeros = [1, 2, 3, 4, 5, 6]
pares = list(filter(lambda n: n % 2 == 0, numeros))

También puede escribirse como [n for n in numeros if n % 2 == 0]. Las comprensiones suelen ser más familiares para lectores de Python.

Lambdas con varios parámetros

Una lambda puede recibir varios argumentos:

calcular_total = lambda precio, cantidad: precio * cantidad
print(calcular_total(12.5, 4))

También admite valores predeterminados, aunque una firma compleja suele indicar que conviene usar def.

Closures y captura de variables

Las lambdas pueden usar variables del entorno:

def crear_multiplicador(factor):
    return lambda numero: numero * factor

por_tres = crear_multiplicador(3)
print(por_tres(10))

Este patrón crea una closure. Debes tener cuidado al generar lambdas dentro de bucles, porque la variable puede evaluarse más tarde. Una solución es capturar el valor como argumento predeterminado.

Lambda y *args

La sintaxis admite argumentos flexibles, pero la legibilidad empeora rápidamente. La guía de *args y **kwargs explica cuándo estas firmas son apropiadas. Si una lambda necesita validación, múltiples pasos o manejo de errores, crea una función con nombre.

Limitaciones

El cuerpo solo puede contener una expresión. No puede incluir sentencias como try, while, for tradicional o varias asignaciones. Las expresiones condicionales sí son posibles:

estado = lambda edad: "adulto" if edad >= 18 else "menor"

Una condición sencilla puede ser aceptable. Las condiciones anidadas suelen ser difíciles de leer.

Depuración y documentación

Las lambdas tienen un nombre genérico en trazas y no admiten una docstring convencional como una función con def. Por eso no son ideales para lógica importante. Una función con nombre facilita pruebas, perfilado y mensajes de error. Para investigar rendimiento, revisa cProfile en Python.

Type hints

No existe una sintaxis directa para anotar los parámetros dentro de una lambda. Puedes anotar la variable con Callable:

from collections.abc import Callable

operacion: Callable[[int, int], int] = (
    lambda a, b: a + b
)

La guía de type hints explica Callable y otras anotaciones.

Cuándo usar lambda

Úsala cuando la operación sea breve, local y evidente: una clave de ordenación, una transformación pequeña o un callback simple. Usa def cuando necesites reutilización, documentación, varias expresiones, validación, anotaciones detalladas o pruebas independientes.

La referencia oficial de expresiones lambda define su sintaxis, y el tutorial oficial presenta ejemplos básicos. El mejor código no es el más corto, sino el que permite comprender rápidamente la intención.

Captura tardía dentro de bucles

Este ejemplo sorprende a muchos desarrolladores:

funciones = []
for i in range(3):
    funciones.append(lambda: i)

print([funcion() for funcion in funciones])

Las tres funciones consultan el valor final de i. Para capturar cada valor en el momento de creación, usa un argumento predeterminado: lambda i=i: i. Comprender esta evaluación tardía evita errores en callbacks y tareas programadas.

Lambda como argumento de callback

Interfaces gráficas y bibliotecas de eventos suelen recibir una función que se ejecutará más tarde. Una lambda puede adaptar argumentos de manera breve:

def procesar(nombre):
    print(f"Procesando {nombre}")

callback = lambda: procesar("informe.csv")
callback()

Si el callback crece, dale un nombre con def. Los nombres comunican intención y producen trazas de error más útiles.

Legibilidad antes que concisión

Una lambda de una línea puede contener condicionales, llamadas y accesos anidados, pero que sea posible no significa que sea recomendable. En revisiones de código, pregunta si un lector puede entenderla sin detenerse. Si la respuesta es no, una función con nombre, variables intermedias y una docstring será una mejor inversión.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Como converter código Python para C usando Cython
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Cython: cómo acelerar Python compilando a C

    Aprende Cython para acelerar Python: archivos .pyx, cdef, cpdef, tipos C, memoryviews, GIL, NumPy, compilación y benchmarks.

    Ler mais

    Tempo de leitura: 6 minutos
    11/07/2026
    Uso do operador ternário em Python para condições rápidas
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Operador ternario en Python: guía clara y práctica

    Aprende el operador ternario en Python: sintaxis, asignaciones, listas, return, anidación, errores frecuentes y buenas prácticas.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Como usar o comando return em funções Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Return en Python: cómo devolver valores correctamente

    Aprende cómo funciona return en Python, su diferencia con print, múltiples valores, None, type hints, excepciones y buenas prácticas.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Explicação prática de args e kwargs em funções Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Args y kwargs en Python: guía completa

    Aprende *args y **kwargs en Python, desempaquetado, parámetros flexibles, errores comunes, type hints y diseño de funciones claras.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Geração de números aleatórios seguros usando secrets em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Números aleatorios seguros en Python con secrets

    Aprende secrets en Python para generar números, contraseñas y tokens seguros con randbelow, choice, token_hex, token_urlsafe y compare_digest.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Uso do with para abrir arquivos com segurança em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Sentencia with en Python: archivos seguros y contextos

    Aprende la sentencia with en Python para abrir archivos con seguridad, manejar errores, usar context managers, contextlib y varios recursos.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026