Actualizado el 19/02/2023.
La palabra reservada lambda
permite crear funciones de manera rápida, just in time, sobre la marcha, para prototipos ligeros que requieren únicamente de una pequeña operación o comprobación. Toda función lambda también puede expresarse como una convencional (pero no viceversa).
En la imagen se observa cómo está constituida una función lambda y en comparación a una convencional. En color verde se remarcan los argumentos y en rojo el valor de retorno. En base a esto, se conforma de la siguiente manera:
lambda argumentos: resultado
O también asignándola a una variable:
f = lambda argumentos: resultado
Y es equivalente a:
def f(argumentos): return resultado
Al igual que en las convencionales, en las funciones lambda pueden utilizarse argumentos opcionales o bien ninguno, retornar cualquier tipo de valor o bien None
. Algunos ejemplos y sus equivalencias:
>>> def f(x, y, z=1): ... return (x+y) * z >>> f(5, 6) 11 >>> f(5, 6, 7) 77 >>> f = lambda x, y, z=1: (x+y) * z >>> f(5, 6) 11 >>> f(5, 6, 7) 77
>>> def f(): ... return >>> print(f()) None >>> f = lambda: None >>> print(f()) None
Sin embargo, las funciones están siempre diferenciadas, aunque tengan comportamiento y resultados equivalentes.
>>> def a(x): ... return x * 5 >>> b = lambda x: x * 5 >>> a <function a at 0x0238C7B0> >>> b <function <lambda> at 0x0238CA70> >>> a == b False >>> a is b False
La razón por la cual querrás emplear este tipo de funciones es simplemente por rapidez (durante el desarrollo, no en la ejecución) y, en ciertos casos, claridad del código. Veamos un ejemplo práctico.
La función filter(funcion, iterable)
construye una lista con aquellos elementos en los cuales funcion(iterable[i])
retorna True
. Por lo tanto, si se quieren mantener los números mayores a cero de una determinada lista, podría utilizarse:
>>> a = [0, 1, -1, -2, 3, -4, 5, 6, 7] >>> b = filter(lambda x: x > 0, a) >>> b [1, 3, 5, 6, 7]
Que es equivalente a:
def f(x): return x > 0 b = filter(f, a)
Como se puede observar, la segunda opción se ve más explícita (tres líneas), aunque la primera actúa de forma similar en menor cantidad de código (una línea).
Curso online 👨💻
¡Ya lanzamos el curso oficial de Recursos Python en Udemy!
Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter
en 2024.
Consultoría 💡
Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.
Emanuel says:
Gracias! estoy haciendo un curso de Python y me costo entenderlo, con la explicación de aquí me quedo mas claro.
Vannia says:
Muchas Gracias!! muy Claro