Dominando Funções Lambda em Python: Exemplos Práticos e Boas Práticas
Dominando Funções Lambda em Python: Exemplos Práticos e Boas Práticas
Funções lambda, frequentemente chamadas de funções anônimas, permitem escrever pequenas rotinas descartáveis em uma única linha. Elas são úteis em código de estilo funcional, especialmente quando usadas com map, filter e reduce.
O que é uma Função Lambda?
Uma lambda é uma função definida com a palavra-chave lambda em vez de def. Ela aceita zero ou mais parâmetros e retorna o valor de uma única expressão. Como o corpo é uma expressão, uma lambda não pode conter instruções ou múltiplas linhas.
Toda lambda tem três partes essenciais:
- A palavra-chave
lambda. - Um ou mais parâmetros (separados por vírgulas).
- Uma única expressão que produz o valor de retorno.
Por exemplo, lambda x, y: x + y soma dois números. Embora anônima, a lambda pode ser atribuída a uma variável, passada para outra função ou chamada imediatamente.
Como Escrever uma Lambda
Sintaxe formal:
lambda p1, p2, ... : expressao
Note a ausência de parênteses em torno dos parâmetros. A expressão pode usar qualquer operação válida do Python.
Exemplo 1: Somador Simples
somador = lambda x, y: x + y print(somador(1, 2)) # → 3
Exemplo 2: Inspecionando um Objeto Lambda
string = 'algum tipo de lambda inútil' print(lambda string: print(string)) # → <function <lambda> at 0x...>
Aqui, a lambda nunca é chamada; o print exibe o objeto função que a lambda retorna.
Exemplo 3: Lambda Invocada Imediatamente (IIFE)
(lambda x: print(x))('IIFE em ação') # → IIFE em ação
Envolvendo a definição em parênteses e adicionando parênteses após ela, chama a lambda imediatamente.
Exemplo 4: Lambdas vs. Funções Regulares
# Função regular
def impressora(arg):
return print(arg)
# Lambda que chama a função
guru(lambda: impressora('Chamada lambda')) # → Chamada lambda
Ambos os trechos produzem a mesma saída, mas a versão lambda é mais concisa quando você só precisa de uma chamada única.
Usando Lambdas com Funções Nativas
Lambdas brilham quando passadas como callbacks para funções de ordem superior. Abaixo estão padrões comuns.
Expressão de Função Invocada Imediatamente (IIFE) em Python
(lambda x: x + x)(2) # → 4
Filter
A função filter mantém elementos que satisfazem um predicado.
sequencias = [10, 2, 8, 7, 5, 4, 3, 11, 0, 1] filtrados = filter(lambda x: x > 4, sequencias) print(list(filtrados)) # → [10, 8, 7, 5, 11]
Map
A função map transforma cada elemento.
sequencias = [10, 2, 8, 7, 5, 4, 3, 11, 0, 1] quadrados = map(lambda x: x * x, sequencias) print(list(quadrados)) # → [100, 4, 64, 49, 25, 16, 9, 121, 0, 1]
Reduce
Use reduce para acumular um único valor a partir de uma sequência.
from functools import reduce sequencias = [1, 2, 3, 4, 5] produto = reduce(lambda x, y: x * y, sequencias) print(produto) # → 120
Quando Usar (e Evitar) Lambdas
Lambdas são ideais para operações concisas, de uso único, que cabem em uma única expressão. São comuns em construções de programação funcional como map e filter.
No entanto, evite lambdas excessivamente complexas em código de produção. One-liners longos e ilegíveis podem prejudicar a manutenibilidade. Nesses casos, uma função nomeada com uma docstring clara é preferível.
Lambdas vs. Funções Regulares
| Característica | Lambda | Função Regular |
|---|---|---|
| Sintaxe | lambda x: x + x | def somar(x): return x + x |
| Corpo | Única expressão apenas | Múltiplas instruções permitidas |
| Nomeação | Anônima (sem identificador) | Deve ter um nome |
| Retorno | Implícito da expressão | Explícito com return |
| Caso de uso | Lógica curta, descartável | Lógica reutilizável, complexa |
Conclusão
- Use lambdas para funções compactas de expressão única.
- Prefira funções nomeadas quando a lógica for complexa ou reutilizável.
- Mantenha o código legível; simplicidade vence esperteza.
python
- Dominando Argumentos de Funções em Python: Parâmetros Posicionais, Nomeados e Padrão
- Funções Lambda em Python: Guia Prático para Funções Anônimas
- Closures em Python Explicados: Como Funções Aninhadas Capturam Variáveis
- Sobrecarga de Operadores em C++: Guia Prático com Exemplos de Código
- Funções em C++ Explicadas com Exemplos Práticos de Código
- Função Print() do Python: Guia Prático com Exemplos
- Dominando o Método strip() do Python: Guia Completo e Exemplos Práticos
- Domine o str.count() do Python: Como Contar Caracteres e Substrings com Exemplos
- Domine Strings format() em Python com Exemplos Claros
- Domine o Método String.find() do Python: Sintaxe, Exemplos e Alternativas