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
lambdaes una función anónima sin parametros que siempre devuelve un2. Como se ha asignado a una variable llamadados, 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
lambdatoma dos parametros y devuelve el valor del primero elevado al segundo. El nombre de la variable que lleva lalambdahabla 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?