O que são Funções Lambda em Python ou Funções Anônimas

Funções lambda em Python (anônimas)

As funções lambda em Python (ou expressões lambda) são funções anônimas, ou seja, são funções sem nome que podem ser criadas e usadas no mesmo momento. Essas funções são definidas com a palavra-chave lambda, seguida de um ou mais argumentos separados por vírgula, um sinal de dois pontos e uma expressão que define o comportamento da função.

Essas funções são chamadas de lambda por conta de sua semelhança com uma ferramenta disponível na linguagem de programação LISP.

Da mesma forma que a instrução def, a expressão lambda cria uma função e a retorna, sem atribuir um nome a ela – daí o nome função anônima (sem nome).

Lambda é uma expressão única, e não uma instrução, e por isso pode ser empregada em locais no código onde uma instrução def não poderia ser utilizada, como como dentro de uma lista ou na chamada de uma função.

Qual a utilidade das expressões lambda?

As expressões lambda são úteis na forma de um “atalho” de função, permitindo inserir uma definição de função diretamente no código que faz uso dessa função.

São expressões opcionais, mas podem simplificar determinados cenários de codificação, por exemplo quando precisamos apenas executar funções simples em trechos do código.

Sintaxe de Expressões Lambda

A sintaxe geral de uma função lambda é a seguinte:

lambda argumentos: expressão

Por exemplo, para criar uma função lambda que calcula o quadrado de um número, podemos escrever:

quadrado = lambda x: x**2

Isso equivale a definir uma função comum da seguinte forma:

def quadrado(x):
    return x**2

As funções lambda são úteis em situações em que precisamos de uma função simples que seja usada apenas uma vez ou em que precisamos passar uma função como argumento para outra função.

Por exemplo, podemos usar uma função lambda para ordenar uma lista de dicionários pelo valor de uma determinada chave:

pessoas = [ {'nome': 'João', 'idade': 20}, {'nome': 'Maria', 'idade': 25}, {'nome': 'Pedro', 'idade': 18}]
pessoas_ordenadas = sorted(pessoas, key=lambda x: x['idade'])
print(pessoas_ordenadas)

Resultado:

[{'nome': 'Pedro', 'idade': 18}, {'nome': 'João', 'idade': 20}, {'nome': 'Maria', 'idade': 25}]

Neste exemplo, a função lambda é usada como argumento da função sorted() para definir que a lista de dicionários deve ser ordenada pelo valor da chave ‘idade’.

Outra aplicação comum das funções lambda é em conjunto com as funções map(), filter() e reduce(), que são funções de ordem superior que permitem aplicar uma função a cada elemento de uma sequência, filtrar elementos de uma sequência com base em uma condição ou reduzir uma sequência a um único valor.

Por exemplo, podemos usar uma função lambda combinada com a função map() para calcular o cubo de cada número em uma lista:

numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
cubos = list(map(lambda x: x**3, numeros))
print(cubos)

Resultado:

[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

Neste exemplo, a função lambda é aplicada a cada elemento da lista numeros e o resultado é uma nova lista com os cubos dos números.

Em resumo, as funções lambda são uma forma prática e concisa de definir funções anônimas em Python. Elas são úteis em situações em que precisamos de uma função simples que seja usada apenas uma vez ou em que precisamos passar uma função como argumento para outra função.

Além disso, as funções lambda podem ser usadas em conjunto com outras funções de ordem superior para manipular sequências de dados de forma eficiente.

O que é uma função de ordem superior?

Em Python, uma função de ordem superior (ou high-order function) é uma função que pode receber outras funções como argumento e/ou retornar funções como resultado.

Isso significa que as funções de ordem superior tratam as funções como objetos de primeira classe, permitindo que elas sejam manipuladas e usadas de forma flexível em combinação com outras funções.

Uma das principais vantagens das funções de ordem superior é a sua capacidade de tornar o código mais genérico e reutilizável. Ao receber funções como argumentos, uma função de ordem superior pode ser usada com diferentes funções de entrada para realizar diferentes tarefas, sem a necessidade de reescrever a mesma lógica várias vezes.

Um exemplo comum de função de ordem superior em Python é justamente a função built-in map(). Como vimos, essa função recebe uma função e um iterável como argumentos e aplica a função a cada elemento do iterável, retornando um novo iterável com os resultados.

Outros exemplos de funções de ordem superior em Python incluem filter(), reduce(), sorted(), any(), all(), entre outras.

A programação funcional é um paradigma que faz uso intensivo de funções de ordem superior. Nesse paradigma, as funções são tratadas como cidadãs de primeira classe, permitindo a criação de programas mais concisos, legíveis e flexíveis.

O Python também suporta a programação funcional, embora não seja uma linguagem funcional pura, permitindo que os desenvolvedores tirem proveito das funções de ordem superior para escrever código mais eficiente e elegante.

E objeto de primeira classe? O que é isso?

Em Python, objetos de primeira classe são aqueles que podem ser tratados como qualquer outra variável, ou seja, podem ser passados como argumentos para funções, retornados como resultados de funções e atribuídos a variáveis.

Isso significa que, em Python, as funções também são objetos de primeira classe, o que permite a criação de funções de ordem superior. Essas funções podem receber outras funções como argumentos ou retornar funções como resultado.

Por exemplo, uma função de ordem superior em Python pode receber uma função como argumento e aplicar essa função a um conjunto de dados. Outra possibilidade é que a função de ordem superior possa retornar uma função, que pode ser armazenada em uma variável e usada posteriormente.

Essa característica é uma das razões pelas quais Python é uma linguagem tão poderosa e flexível, permitindo uma grande variedade de abordagens para solucionar problemas de programação.

 

Sobre Fábio dos Reis (1195 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

Escreva um comentário

Seu e-mail não será divulgado


*