Además de la forma “def nameFuncion():”, Python proporciona una forma de expresión que genera objetos funcionales, conservando la similitud con el lenguaje Lisp, la cual llamamos Lambda.
Lambda al igual que def crea una función, con la diferencia de no poseer un nombre y que por lo tanto no puede ser referenciada mas tarde, por esta razón Lambda se conoce como una función anónima.
Para construir una función Lambda lo hacemos mediante el operador “lambda”, sus parámetros deben estar separados por comas (SIN PARÉNTESIS), dos puntos y el código de la función.
Por ejemplo:
>>> lambda argumento1, argumento2, argumentoN : expresion usando argumentos
LAMBDA ES UNA EXPRESIÓN, NO UNA SENTENCIA, debido a esto, son distintas de las funciones declaradas con def, porque el interprete siempre las asocia a un nombre determinado, por el contrario una Lambda simplemente regresa un resultado.
declaración con def
deffunc(x,y,z):return x + y + z
Si llamamos a esta función y le pasamos los argumentos seria así:
func(2,3,4)
>>> 9
Ahora creemos una expresión Lambda:
f = lambda x, y, z: x + y + z
para invocarla con sus parámetros sería :
>>> f(2, 3, 4)
>>> 9
En el ejemplo anterior a f se le asigna el objeto de función que crea la expresión lambda; así es como funciona “def”, pero su asignación es automática.
Los valores predeterminados funcionan en argumentos Lambda al igual que en una definición.
por ejemplo:
x = ( lambda a="cri", b="sti", c = "an": a + b + c )
hacemos una llamada:
x("wee")
tendríamos la siguiente salida:
>>> 'weestian'
POR QUÉ LAMBDA
En términos generales, Lambda es útil como una especie de taquigrafía o técnica de escritura de función, que nos permite incrustar la definición de una función dentro del código que estamos usando, son enteramente opcionales, teniendo en cuenta que puedes usar def en su lugar y deberíamos hacerlo si su función requiere declaraciones que la expresión Lambda no puede proporcionar, sin embargo, Lambda, tiende a ser construcciones de código mas simples en escenarios en los que solo se necesita pequeñas lineas de código ejecutable IN_LINE.