Curso
Você pode escrever suas próprias funções Python usando a palavra-chave def, cabeçalhos de função, docstrings e corpos de função. No entanto, há uma maneira mais rápida de escrever funções em tempo real, e elas são chamadas de funções lambda
porque você usa a palavra-chave lambda
.
Algumas definições de função são simples o suficiente para que possam ser convertidas em uma função lambda. Ao fazer isso, você escreve menos linhas de código, o que é muito bom e será útil, especialmente quando estiver escrevendo e mantendo programas grandes.
lambda
Função
Aqui reescrevemos nossa função raise_to_power
como uma função lambda. Após a palavra-chave lambda
, especificamos os nomes dos argumentos; em seguida, usamos dois pontos seguidos da expressão que especifica o que desejamos que a função retorne.
raise_to_power = lambda x, y: x ** y
raise_to_power(2, 3)
8
Conforme mencionado, as funções lambda
permitem que você escreva funções de forma rápida e suja, portanto, não recomendamos que você as use o tempo todo, mas há situações em que elas são úteis, como no exemplo abaixo.
map()
e lambda
Função
A função map
recebe dois argumentos, uma função e uma sequência, como uma lista, e aplica a função em todos os elementos da sequência. Podemos passar a função lambda
para o map
sem sequer nomeá-las e, nesse caso, nos referimos a elas como funções anônimas.
Neste exemplo, usamos map()
na função lambda
, que eleva todos os elementos da lista ao quadrado, e armazenamos o resultado em square_all
.
nums = [48, 6, 9, 21, 1]
square_all = map(lambda num: num ** 2, nums)
print(square_all)
<map object at 0x103e065c0>
A impressão de square_all
revela que se trata de um objeto map
, portanto, para ver o que ele retorna, usamos list para transformá-lo em uma lista e imprimir o resultado.
print(list(square_all))
[2304, 36, 81, 441, 1]
Exemplo interativo de redação de um lambda
Função
A função abaixo echo_word
recebe 2 parâmetros: um valor de cadeia de caracteres, word1
, e um valor inteiro echo
. Ele retorna uma cadeia de caracteres que é uma concatenação de echo
cópias de word1
.
Você converterá a função simples acima em uma função lambda.
def echo_word(word1, echo):
"""Concatenate echo copies of word1."""
words = word1 * echo
return words
No exemplo a seguir, você fará isso:
- Defina uma função lambda
echo_word
usando as variáveisword1
eecho
. Replicar o que a definição original da função paraecho_word()
faz acima. - Chame
echo_word()
com o argumento de cadeia de caracteres'hey'
e o valor5
, nessa ordem. Atribua a chamada pararesult
. Por fim, imprima a variávelresult
.
# 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)
Quando executamos o código acima, ele produz o seguinte resultado:
heyheyheyheyhey
Para saber mais sobre as funções Lambda, assista a este vídeo do nosso curso Python Data Science Toolbox (Parte 1).
Este conteúdo foi extraído do curso Python Data Science Toolbox (Parte 1) do DataCamp, ministrado por Hugo Bowne-Anderson.
Confira o tutorial de funções Python do DataCamp.