Expressões Lambda - Python
As expressões lambda em Python são pequenas funções anônimas, que são definidas usando o operador lambda
lambda parametros_opcionais : instrução
Vamos definir uma expressão lambda simples:
message = lambda: print("hello")
message() # hello
Aqui, a expressão lambda é atribuída à variável message
message
def message():
print("hello")
Se a expressão lambda tiver parâmetros, eles são definidos após a palavra-chave lambda
square = lambda n: n * n
print(square(4)) # 16
print(square(5)) # 25
Neste exemplo, a expressão lambda recebe um parâmetro, n. À direita dos dois-pontos está o valor retornado, n * n
def square(n):
return n * n
De maneira semelhante, podemos criar expressões lambda que aceitam múltiplos parâmetros:
sum = lambda a, b: a + b
print(sum(4, 5)) # 9
print(sum(5, 6)) # 11
Embora as expressões lambda permitam reduzir a quantidade de código ao definir funções, elas têm a limitação de só poderem executar uma única instrução. No entanto, são bastante úteis em situações onde precisamos passar uma função como parâmetro para outra função, ou quando uma função deve retornar outra função. Veja um exemplo de expressão lambda sendo passada como parâmetro:
def do_operation(a, b, operation):
result = operation(a, b)
print(f"result = {result}")
do_operation(5, 4, lambda a, b: a + b) # result = 9
do_operation(5, 4, lambda a, b: a * b) # result = 20
Neste caso, não é necessário definir funções separadas para realizar a soma e a multiplicação. Em vez disso, passamos expressões lambda diretamente para a função do_operation
O mesmo conceito se aplica quando uma função retorna uma expressão lambda:
def select_operation(choice):
if choice == 1:
return lambda a, b: a + b
elif choice == 2:
return lambda a, b: a - b
else:
return lambda a, b: a * b
operation = select_operation(1) # operation = soma
print(operation(10, 6)) # 16
operation = select_operation(2) # operation = subtração
print(operation(10, 6)) # 4
operation = select_operation(3) # operation = multiplicação
print(operation(10, 6)) # 60
Neste exemplo, a função select_operation