2.1 Definindo funções lambda
Funções lambda, também conhecidas como funções anônimas, são
funções compactas de uma linha sem nome, que
podem ser criadas usando a palavra-chave lambda
.
Ao contrário das funções normais, definidas com
def
, funções lambda são criadas na hora e geralmente
são usadas para operações simples que são feitas em uma linha.
A sintaxe de uma função lambda consiste na palavra-chave
lambda
, seguida dos argumentos, dois pontos e
a expressão:
lambda argumentos: expressão
Funções lambda podem receber qualquer quantidade de argumentos, mas podem conter somente uma expressão. O valor dessa expressão é retornado automaticamente.
Exemplos:
Função lambda | Função comum |
---|---|
|
|
|
|
|
|
2.2 Aplicações de funções lambda
Funções lambda são frequentemente usadas em conjunto com outras funções,
como map()
, filter()
e
sorted()
, assim como argumentos para outras funções.
Uso com map()
A função map()
aplica uma função dada a cada elemento de um
objeto iterável e retorna um iterador com os resultados.
Funções lambda são ótimas para usar com map()
,
pois permitem definir de maneira concisa uma função para transformar
elementos.
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers) # Saída: [1, 4, 9, 16, 25]
Uso com filter()
A função filter()
retorna um iterador composto pelos
elementos de um objeto iterável para os quais a função dada retorna
True. Funções lambda permitem definir rapidamente uma condição para filtrar.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # Saída: [2, 4, 6, 8, 10]
Uso com sorted()
A função sorted()
ordena os elementos de um objeto iterável.
Funções lambda podem ser usadas para definir um critério de ordenação personalizado com o argumento key
.
words = ["banana", "apple", "cherry", "date"]
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words) # Saída: ['date', 'apple', 'banana', 'cherry']
Funções lambda em expressões
Funções lambda podem ser usadas dentro de outras expressões, como expressões de listas e geradores de dicionários.
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
print(pairs) # Saída: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
2.3 Limitações das funções lambda
Funções lambda têm algumas limitações em comparação com funções normais:
Limitação a expressões:
Funções lambda podem conter somente uma expressão e não podem incluir
operadores complexos, como loops ou operadores de controle de fluxo
(por exemplo, if
, else
, etc.).
Ausência de documentação:
Funções lambda não podem conter uma string de documentação (docstring), o que dificulta a documentação da sua funcionalidade.
Possibilidades limitadas de depuração:
Devido à falta de nome e documentação, funções lambda são mais difíceis de depurar em comparação com funções normais.
Exemplo de limitação de funções lambda
Tentar usar várias expressões dentro de uma função lambda resultará em um erro de sintaxe:
# Este código gerará um erro
invalid_lambda = lambda x: x ** 2; print(x)
GO TO FULL VERSION