Module (66%)
Section (69%)

La función lambda

La función lambda es un concepto tomado de las matemáticas, más específicamente, de una parte llamada el cálculo Lambda, pero estos dos fenómenos no son iguales.

Los matemáticos usan el cálculo Lambda en sistemas formales conectados con: la lógica, la recursividad o la demostrabilidad de teoremas. Los programadores usan la función lambda para simplificar el código, hacerlo más claro y fácil de entender.

Una función lambda es una función sin nombre (también puedes llamarla una función anónima). Por supuesto, tal afirmación plantea inmediatamente la pregunta: ¿cómo se usa algo que no se puede identificar?

Afortunadamente, no es un problema, ya que se puede mandar llamar dicha función si realmente se necesita, pero, en muchos casos la función lambda puede existir y funcionar mientras permanece completamente de incógnito.

La declaración de la función lambda no se parece a una declaración de función normal; compruébalo tu mismo:

lambda parámetros: expresión

Tal cláusula devuelve el valor de la expresión al tomar en cuenta el valor del argumento lambda actual.

Como de costumbre, un ejemplo será útil. Nuestro ejemplo usa tres funciones lambda, pero con nombres. Analizalo cuidadosamente:

dos = lambda : 2 cuadrado = lambda x : x * x potencia = lambda x, y : x ** y for a in range(-2, 3): print(cuadrado(a), end=" ") print(potencia(a, dos()))


Vamos a analizarlo:

  • La primer lambda es una función anónima sin parametros que siempre devuelve un 2. Como se ha asignado a una variable llamada dos, podemos decir que la función ya no es anónima, y se puede usar su nombre para invocarla.

  • La segunda es una función anónima de un parámetro que devuelve el valor de su argumento al cuadrado. Se ha nombrado también como tal.

  • La tercer lambda toma dos parametros y devuelve el valor del primero elevado al segundo. El nombre de la variable que lleva la lambda habla por si mismo.

El programa produce el siguiente resultado:

4 4 1 1 0 0 1 1 4 4

Este ejemplo es lo suficientemente claro como para mostrar cómo se declaran las funciones lambda y cómo se comportan, pero no dice nada acerca de por qué son necesarias y para qué se usan, ya que se pueden reemplazar con funciones de Python de rutina.

¿Dónde está el beneficio?