Funções Anônimas: A Função Lambda
- #Python
Em Python, uma função é uma sequência de comandos que realiza uma tarefa específica. É possível passar parâmetros para as funções e elas podem retornar um valor. Essa função possui nome,um corpo e opcionalmente um retorno. Essas funções são definidas pela palavra reservada def.
# Eis um exemplo de função
def imprime():
print("olá")
# forma de usar a função
imprime()
# resultado
olá
Como visto acima as funções são bem úteis e são a base da programação em python, porém para códigos mais simples e que não precisam ser reutilizados essas funções são as: Funções Lambda.
Uma função Lambda não é definida com um nome e um corpo e pode ser expressada em apenas uma linha de código e é definida da seguinte forma: lambda [parâmetro(s)]: expressão
# função lambda
f = lambda x: x ** 2
No código acima foi criada a variável chamada f com a atribuição de pegar uma numero qualquer elevá-lo ao quadrado.
Esse número só vai ser denominado no momento de usar a função lambda.
# Exemplo
f(3)
# saida -> 9
f(10)
# saida -> 100
A principio uma função anônima pode parecer simples se sem uso, já que era só fazer uma multiplicação simples e estava tudo certo, porém o poder da função lambda vem quando usada com outras funções. Veja o exemplo abaixo.
Dado uma Lista de números imprima todos os números elevados ao quadrado.
lista = [2,3,4,5,6,7,8]
lista_quadrado = map(f, lista)
# Exibindo o resultado
list(lista_quadrado)
# saida
[4, 9, 16, 25, 36, 49, 64]
O código acima usa uma outra função built-in do python chamada 'map', a qual pode aplicar o resultado da função lambda em todos os números da lista, ou seja, a função map percorre todos os itens da lista aplicando a função lambda f (f = lambda x: x ** 2).
O resultado está sendo armazenado na variável "lista_quadrado" e listado na tela no comando list(lista_quadrado), isso porque o resultado tem que ser transformado em lista antes de ser impresso na tela.
Uma Função Lambda também pode ser usada para fazer uma mesma função retornar valores diferentes como abaixo:
def minha_funcao(n):
return lambda a : a * n
dobro = minha_funcao(2)
triplo = minha_funcao(3)
print(dobro(11))
print(triplo(11))
# saida
22
33
Nesse breve post foi mostrado apenas uma pequena parte do poder das funções anônimas.
Você pode ver mais formas de usar nesse link: https://realpython.com/python-lambda/
Link para documentação do python: lambda expression