Neste tutorial, mostraremos como criar funções anônimas em Python. Funções anônimas em Python são criadas com a palavra-chave lambda.

Funções lambda do Python

As funções lambda do Python, também conhecidas como funções anônimas, são funções embutidas que não têm um nome. Eles são criados com a palavra-chave lambda. Isso faz parte do paradigma funcional integrado ao Python.

As funções lambda do Python são restritas a uma única expressão. Eles podem ser usados onde as funções normais podem ser usadas.

Sintaxe Python lambda

Python lambda tem a seguinte sintaxe:

nome_da_variavel  = lambda x: x * y

 

Exemplo de lambda em Python

A seguir está um exemplo simples que demonstra a função lambda do Python.

# usando funcao normal
def quadrado(x):
   
    return x * x
 
# usando Lambda
f_quadrada = lambda x: x * x
 
print(quadrado(3))
print(f_quadrada(3))

 

No exemplo, temos duas funções que elevam ao quadrado um valor.

def quadrado(x):
   
    return x * x

 

Esta é uma função Python definida com a palavra-chave def. O nome da função é quadrado.

f_quadrada = lambda x: x * x

 

Aqui, definimos uma função anônima em linha com lambda. Observe que a função não tem nome. O f_quadrada é o nome da variável que contém a função lambda criada.

Resultado:

9
9

 

Python lambda com map

As funções lambda do Python são úteis com a função map(). Podemos criar um código mais conciso. Python map() é uma função embutida que aplica a função dada em cada item do (s) iterável (s) e retorna um objeto iterador.

numeros = [1, 2, 3, 4, 5]
 
#usando a funcao lambada dentro do map
quadrado = map(lambda x: x * x, numeros)
 
for numero in quadrado:
    print(numero)


Resultado

1
4
9
16
25

 

Python lambda com filtro

As funções lambda do Python podem ser usadas com a função filter(). A função filter() constrói uma lista dos elementos do iterável para os quais a função retorna true.

numeros = [1, 2, 3, 4, 5]
 
#vusando a funcao lambada dentro do filter,
# para pegar numeros que sua divisao por 2 nao da resto zero
filtrando_numeros = list(filter(lambda x: x % 2, numeros))

print(filtrando_numeros)

 

Resultado

[1, 3, 5]

 

No exemplo, filtramos a lista de inteiros. A nova lista contém apenas números inteiros ímpares.

filtrando_numeros = list(filter(lambda x: x % 2, numeros))

O primeiro parâmetro do filter() é a função que processa os elementos da lista. A função lambda tem a expressão x% 2, que retorna verdadeiro para valores ímpares.


Python lambda com sort()

As listas Python têm um método list.sort() integrado que modifica a lista no local. O método tem um parâmetro chave para especificar uma função a ser chamada em cada elemento da lista antes de fazer comparações. Lá podemos usar uma função lambda.

pais = [
   {'pais': 'Angoala', 'populacao': 10009},
   {'pais': 'Brasil', 'populacao': 13366},
   {'pais': 'Portugal', 'populacao': 23545},
   {'pais': 'India', 'populacao': 36541},
   {'pais': 'China', 'populacao': 23694}
]
 
pais.sort (reverse = True, key = lambda e: e ['populacao'])
 
for p in pais:
     print(p)


Temos uma lista de dicionários de países. Com a função lambda, classificamos os países por seu número de populações na ordem inversa.

Resultado

{'pais': 'India', 'populacao': 36541}
{'pais': 'China', 'populacao': 23694}   
{'pais': 'Portugal', 'populacao': 23545}
{'pais': 'Brasil', 'populacao': 13366}  
{'pais': 'Angoala', 'populacao': 10009}