Curso
Puedes crear tus propias funciones de Python usando la palabra clave def, cabeceras de función, docstrings y cuerpos de función. Sin embargo, existe una forma más rápida de escribir funciones sobre la marcha: se llaman funciones lambda porque se definen con la palabra clave lambda.
Algunas definiciones de funciones son lo bastante sencillas como para convertirlas en una función lambda. Al hacerlo, escribes menos líneas de código, lo cual es fantástico y muy útil, sobre todo cuando desarrollas y mantienes programas grandes.
lambda function
Aquí reescribimos nuestra función raise_to_power como una función lambda. Tras la palabra clave lambda, indicamos los nombres de los argumentos; después usamos dos puntos seguidos de la expresión que especifica qué queremos que devuelva la función.
raise_to_power = lambda x, y: x ** y
raise_to_power(2, 3)
8
Como comentábamos, las funciones lambda te permiten escribir funciones de forma rápida y "sin florituras". No te recomendamos usarlas siempre, pero hay situaciones en las que vienen genial, como en el ejemplo siguiente.
map() and lambda function
La función map recibe dos argumentos: una función y una secuencia (por ejemplo, una lista), y aplica la función a todos los elementos de la secuencia. Podemos pasar funciones lambda a map sin siquiera ponerles nombre; en ese caso, hablamos de funciones anónimas.
En este ejemplo, usamos map() con una función lambda que eleva al cuadrado todos los elementos de la lista y guardamos el resultado en square_all.
nums = [48, 6, 9, 21, 1]
square_all = map(lambda num: num ** 2, nums)
print(square_all)
<map object at 0x103e065c0>
Imprimir square_all muestra que es un objeto map, así que, para ver qué devuelve, lo convertimos a lista con list y mostramos el resultado.
print(list(square_all))
[2304, 36, 81, 441, 1]
Ejemplo interactivo de cómo escribir una función lambda
La función echo_word de abajo recibe 2 parámetros: una cadena, word1, y un entero, echo. Devuelve una cadena que es la concatenación de echo copias de word1.
Vas a convertir esta función sencilla en una función lambda.
def echo_word(word1, echo):
"""Concatenate echo copies of word1."""
words = word1 * echo
return words
En el siguiente ejemplo, harás lo siguiente:
- Define una función lambda
echo_wordusando las variablesword1yecho. Reproduce lo que hace la definición original deecho_word()de arriba. - Llama a
echo_word()con el argumento de cadena'hey'y el valor5, en ese orden. Asigna la llamada aresult. Por último, imprime la variableresult.
# Define echo_word as a lambda function: echo_word
echo_word = (lambda word1, echo: word1 * echo)
# Call echo_word: result
result = echo_word('hey', 5)
# Print result
print(result)
Al ejecutar el código anterior, se obtiene el siguiente resultado:
heyheyheyheyhey
Para saber más sobre las funciones lambda, echa un vistazo a este vídeo de nuestro curso Python Data Science Toolbox (Part 1).
Este contenido está extraído del curso Python Data Science Toolbox (Part 1) de DataCamp, impartido por Hugo Bowne-Anderson.
Consulta el tutorial de funciones en Python de DataCamp.