Link Search Menu Expand Document

Funciones lambda

Las funciones lambda o an贸nimas son un tipo de funciones en Python que t铆picamente se definen en una l铆nea y cuyo c贸digo a ejecutar suele ser peque帽o. Resulta complicado explicar las diferencias, y para que te hagas una idea de ello te dejamos con la siguiente cita sacada de la documentaci贸n oficial.

鈥淧ython lambdas are only a shorthand notation if you鈥檙e too lazy to define a function.鈥

Lo que significa algo as铆 como, 鈥渓as funciones lambda son simplemente una versi贸n acortada, que puedes usar si te da pereza escribir una funci贸n鈥

Lo que ser铆a una funci贸n que suma dos n煤meros como la siguiente.

def suma(a, b):
    return a+b

Se podr铆a expresar en forma de una funci贸n lambda de la siguiente manera.

lambda a, b : a + b

La primera diferencia es que una funci贸n lambda no tiene un nombre, y por lo tanto salvo que sea asignada a una variable, es totalmente in煤til. Para ello debemos.

suma = lambda a, b: a + b

Una vez tenemos la funci贸n, es posible llamarla como si de una funci贸n normal se tratase.

suma(2, 4)

Si es una funci贸n que solo queremos usar una vez, tal vez no tenga sentido almacenarla en una variable. Es posible declarar la funci贸n y llamarla en la misma l铆nea.

(lambda a, b: a + b)(2, 4)

##聽Ejemplos

Una funci贸n lambda puede ser la entrada a una funci贸n normal.

def mi_funcion(lambda_func):
    return lambda_func(2,4)

mi_funcion(lambda a, b: a + b)

Y una funci贸n normal tambi茅n puede ser la entrada de una funci贸n lambda. N贸tese que son ejemplo did谩cticos y sin demasiada utilidad pr谩ctica per se.

def mi_otra_funcion(a, b):
    return a + b

(lambda a, b: mi_otra_funcion(a, b))(2, 4)

A pesar de que las funciones lambda tienen muchas limitaciones frente a las funciones normales, comparten gran cantidad de funcionalidades. Es posible tener argumentos con valor asignado por defecto.

(lambda a, b, c=3: a + b + c)(1, 2) # 6

Tambi茅n se pueden pasar los par谩metros indicando su nombre.

(lambda a, b, c: a + b + c)(a=1, b=2, c=3) # 6

Al igual que en las funciones se puede tener un n煤mero variable de argumentos haciendo uso de *, lo conocido como tuple unpacking.

(lambda *args: sum(args))(1, 2, 3) # 6

Y si tenemos los par谩metros de entrada almacenados en forma de key y value como si fuera un diccionario, tambi茅n es posible llamar a la funci贸n.

(lambda **kwargs: sum(kwargs.values()))(a=1, b=2, c=3) # 6

Por 煤ltimo, es posible devolver m谩s de un valor.

x = lambda a, b: (b, a)
print(x(3, 9))
# Salida (9,3)