Funciones Lambda y funciones de orden superior en Python
Las funciones lambda son funciones anónimas, es decir que no tienen nombre. Las funciones lambda se definen en una sola línea.
Lambda se utiliza para simplificar todavía más las funciones pequeñas, para funciones complejas siempre se utiliza la sintaxis normal.
Las funciones lambda no se definen con la palabra clave def como las funciones normales, se definen con la palabra clave lambda.
"Las lambdas de Python son sólo una notación abreviada si eres demasiado perezoso para definir una función"..
Pasos para crear una función lambda
La siguiente función lambda recoge dos parámetros y los muestra en una cadena.
- Definimos la función con la palabra clave
lambda. - Añadimos los parámetros separados por comas, en este caso first y last.
- Añadimos los dos puntos
:y definimos la expresión de la función, sin necesidad de añadirreturn. - Para poder utilizar la función hay que guardarla en una variable en este caso la variable
full_name.
Ya podemos llamar a la función con los argumentos que necesitemos, como en una función común.
full_name = lambda first, last: f'{first} {last}'
print(full_name('Marcel', 'Reig'))
# Output: Marcel Reig
Para ver la diferencia entre una función normal y una función lambda veamos una función normal que suma 3 valores:
def result(x, y, z):
return x + y + z
print(result(5, 5, 5))
# Output: 15
Ahora veamos la misma función convertida a lambda:
result = lambda x, y, z: x + y + z
print(result(5, 5, 5))
# Output: 15
Funciones de orden superior
Una función de orden superior es una función que recibe otra función como parámetro. Las lambdas son especialmente útiles aquí porque permiten definir la función directamente en la llamada, sin necesidad de declararla antes.
En Python:
def apply(num, f):
return f(num)
print(apply(5, lambda num: num * 2))
# Output: 10
En JavaScript:
function apply(num, f) {
return f(num);
}
console.log(apply(5, num => num * 2));
// Output: 10
La sintaxis es diferente pero el concepto es idéntico: pasamos una función anónima como argumento. En Python usamos lambda, en JavaScript usamos una arrow function.
Posteado en Programación con : Python, JavaScript