sexta-feira, 29 de maio de 2020

O que é uma função lambda do Python?

O que é uma função lambda do Python?

Uma função lambda é uma pequena função anônima que retorna um objeto.
O objeto retornado pela função lambda geralmente é atribuído a uma variável ou usado como parte de outras funções maiores.
Em vez da palavra-chave def convencional usada para criar funções, uma função lambda é definida usando a palavra-chave lambda. A estrutura das funções lambdas pode ser vista abaixo:

Exemplos de lambdas simples

Aqui estão alguns exemplos de lambdas em ação:

Uma função quadrática
# Uma função lambda quadrada
square = lambda n : n * n
num = square(5)
print(num)
Uma função de subtração
# Uma função lambda de subtração com vários argumentos
sub = lambda x, y : x-y
print(sub(5, 3))

O objetivo das funções lambdas

Um lambda é muito mais legível do que uma função completa, pois pode ser escrito em linha. Portanto, é uma boa prática usar lambdas quando a expressão da função é pequena.
A beleza das funções lambda reside no fato de que elas retornam objetos de função. Isso as torna úteis quando usadas com funções como a map ou filter, que exigem objetos de função como argumentos.

Função map com lambda

Lambda torna a função map mais concisa.

Função lambda
myList = [10, 25, 17, 9, 30, -5]
# Dobrar o valor de cada elemento
myList2 = map(lambda n : n*2, myList)
print(myList2)
Função normal
# O código é mais longo

def double(n):
  return n * 2

myList = [10, 25, 17, 9, 30, -5]

myList2 = map(double, myList)
print(myList2)

Filter com lambda

Semelhante à função map, a função filter pode ser simplificada com lambda.

Função lambda
myList = [10, 25, 17, 9, 30, -5]
# Filtra os elementos que não são múltiplos de 5
myList2 = filter(lambda n : n%5 == 0, myList)
print(myList2)
Função normal
def multipleOf5(n):
  if(n % 5 == 0):
    return n

myList = [10, 25, 17, 9, 30, -5]

myList2 = filter(multipleOf5, myList)
print(myList2)

Fonte: What is a Python lambda function?
Licença: Creative Commons -Attribution -ShareAlike 4.0 (CC-BY-SA 4.0)

0 comentários:

Postar um comentário