Funções Lambda em Python: o que são e como usar?

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que são funções lambda em Python

As funções lambda em Python oferecem uma maneira compacta e elegante de definir funções diretamente dentro de expressões. Também conhecidas como funções anônimas, elas são criadas sem um nome e geralmente usadas localmente, onde não faz sentido definir uma função completa com a palavra-chave def.

As funções lambda se destacam pela simplicidade e praticidade. São frequentemente combinadas com funções de ordem superior, como map(), filter() e sorted(). Além disso, são amplamente utilizadas em bibliotecas populares do ecossistema Python, como pandas, NumPy, Flask e Tkinter.

Fundamentos da sintaxe de funções lambda

Estrutura de uma expressão lambda

A sintaxe de uma função lambda em Python segue este formato:

lambda argumentos: expressão

Onde:

  • argumentos — lista de parâmetros da função, similar a uma função comum
  • expressão — uma única expressão cujo resultado é retornado como saída da função

Características importantes das funções lambda

As funções lambda em Python possuem algumas propriedades essenciais:

  • Retornam automaticamente o resultado da expressão
  • Não utilizam a palavra-chave return
  • O valor calculado na expressão é o valor de retorno
  • Suportam apenas uma única expressão no corpo da função

Exemplos práticos de expressões lambda

Operações matemáticas simples

# Calcular o quadrado de um número
quadrado = lambda x: x ** 2
print(quadrado(5))  # 25

# Somar dois números
soma = lambda a, b: a + b
print(soma(3, 7))  # 10

# Verificar se um número é par
eh_par = lambda x: x % 2 == 0
print(eh_par(4))  # True

Lambda com expressões condicionais

# Determinar o valor máximo
valor_maximo = lambda x, y: x if x > y else y
print(valor_maximo(10, 15))  # 15

# Categorizar números
categorizar = lambda x: "positivo" if x > 0 else "negativo" if x < 0 else "zero"

Comparação entre lambda e funções tradicionais

Principais diferenças

Característica Função tradicional (def) Função lambda
Sintaxe def func(x): return x * 2 lambda x: x * 2
Quantidade de expressões Múltiplas Apenas uma
Nomeação Possui nome Geralmente anônima
Escopo de uso Reutilização Operações pontuais
Documentação Suporta docstring Não suporta
Anotações de tipo Suporta Suporte limitado

Quando usar lambda

As funções lambda são mais eficientes nestes cenários:

  • Operações simples de uma única linha
  • Uso como argumento de outras funções
  • Cálculos temporários sem necessidade de reutilização
  • Trabalho com funções de ordem superior

Aplicação de lambda em funções de ordem superior

Função map()

A função map() aplica uma função a cada elemento de um iterável:

numeros = [1, 2, 3, 4, 5]
quadrados = list(map(lambda x: x**2, numeros))
print(quadrados)  # [1, 4, 9, 16, 25]

# Converter strings para maiúsculas
palavras = ["olá", "mundo", "python"]
maiusculas = list(map(lambda s: s.upper(), palavras))
print(maiusculas)  # ['OLÁ', 'MUNDO', 'PYTHON']

Função filter()

A função filter() cria um iterador com elementos que satisfazem uma condição:

numeros = [1, 2, 3, 4, 5, 6]
pares = list(filter(lambda x: x % 2 == 0, numeros))
print(pares)  # [2, 4, 6]

# Filtrar palavras com mais de 3 letras
palavras = ["oi", "python", "lambda", "é", "legal"]
longas = list(filter(lambda s: len(s) > 3, palavras))
print(longas)  # ['python', 'lambda', 'legal']

Função sorted()

O sorted() aceita uma função lambda como chave de ordenação:

# Ordenar tuplas pelo segundo elemento
dados = [(1, 5), (3, 2), (2, 8)]
ordenado = sorted(dados, key=lambda x: x[1])
print(ordenado)  # [(3, 2), (1, 5), (2, 8)]

# Ordenar dicionários por valor
alunos = [{"nome": "Ana", "nota": 8}, {"nome": "João", "nota": 6}]
melhores = sorted(alunos, key=lambda x: x["nota"], reverse=True)

Lambda com pandas

Em pandas, as funções lambda são frequentemente usadas com apply() e map():

import pandas as pd

df = pd.DataFrame({"nome": ["Ana", "João", "Maria"], "idade": [25, 30, 22]})

# Criar nova coluna com lambda
df["faixa_etaria"] = df["idade"].apply(lambda x: "jovem" if x < 30 else "adulto")
print(df)

Criando closures com lambda

As funções lambda podem criar closures, capturando variáveis do escopo externo:

def multiplicador(n):
    return lambda x: x * n

dobro = multiplicador(2)
triplo = multiplicador(3)

print(dobro(5))   # 10
print(triplo(5))  # 15

Boas práticas e limitações

Quando evitar lambda

  • Lógicas complexas com múltiplas condições
  • Funções que precisam de documentação (docstring)
  • Código que será reutilizado em vários lugares
  • Depuração, pois lambdas anônimas são difíceis de rastrear

Dicas de uso eficiente

  • Prefira lambda para operações simples e diretas
  • Use funções nomeadas com def para lógicas mais elaboradas
  • Combine lambda com funções de ordem superior para código conciso
  • Evite aninhar múltiplas lambdas para manter a legibilidade

Conclusão

As funções lambda em Python são uma ferramenta poderosa para escrever código mais limpo e expressivo. Elas brilham em cenários onde uma função simples é necessária por um curto período, especialmente com funções de ordem superior como map(), filter() e sorted(). No entanto, para lógicas mais complexas, as funções tradicionais com def ainda são a melhor escolha. Pratique com os exemplos deste guia e descubra como as lambdas podem tornar seu código Python mais elegante!

Blogs

Book Recommendations