Um guia para iniciantes para entender as funções Lambda do Python

Um guia para iniciantes para entender as funções Lambda do Python

Lambdas em Python são um dos recursos mais úteis, importantes e interessantes para conhecer. Infelizmente, eles também são fáceis de interpretar mal e errar.





Neste artigo, vamos explicar tudo o que você precisa saber sobre essas funções misteriosas, como usá-las e por que são úteis.





Antes de mergulhar nesses exemplos práticos, você pode querer configurar um ambiente virtual Python. Se você nem mesmo quiser fazer isso, você deve pelo menos tentar estes exemplos com um shell Python interativo online .





O que é um Lambda em Python?

Um lambda é simplesmente uma maneira de definir uma função em Python. Às vezes, eles são conhecidos como 'operadores lambda' ou 'funções lambda'.

Se você já usou Python antes, provavelmente definiu suas funções usando o def palavra-chave, e funcionou bem para você até agora. Então, por que existe outra maneira de fazer a mesma coisa?



A diferença é que as funções lambda são anônimas. Ou seja, são funções que não precisam ser nomeadas. Eles são usados ​​para criar funções pequenas e pontuais nos casos em que uma função 'real' seria muito grande e volumosa.

Lambdas retornam um objeto de função, que pode ser atribuído a uma variável. Lambdas podem ter qualquer número de argumentos, mas eles podem ter apenas uma expressão. Você não pode chamar outras funções dentro de lambdas.





O uso mais comum para funções lambda é em código que requer uma função simples de uma linha, onde seria um exagero escrever uma função normal completa. Isso é abordado com mais detalhes abaixo, em 'E quanto a Mapear, Filtrar e Reduzir?'.

Como usar lambdas em Python

Antes de olhar para uma função lambda, vamos dar uma olhada em uma função super básica definida da maneira 'tradicional':





def add_five(number):
return number + 5

print(add_five(number=4))

Esta função é muito básica, mas serve para ilustrar lambdas. O seu pode ser mais complexo do que isso. Esta função adiciona cinco a qualquer número passado a ela por meio do número parâmetro.

Esta é a aparência de uma função lambda:

add_five = lambda number: number + 5

print(add_five(number=4))

Em vez de usar def , a palavra lambda é usado. Não são necessários colchetes, mas quaisquer palavras após o lambda palavras-chave são criadas como parâmetros. Os dois pontos são usados ​​para separar os parâmetros e a expressão. Neste caso, a expressão é numero + 5 .

Não há necessidade de usar o Retorna palavra-chave --- o lambda faz isso para você automaticamente.

Veja como você criaria uma função lambda com dois argumentos:

assistir filmes grátis sem inscrição ou download
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

print(add_numbers_and_five(number1=4, number2=3))

Se você ainda não tem certeza quanto ao ponto de lambdas, a próxima seção irá mergulhar e ajudá-lo a ver a luz.

Lambdas Python com mapear, filtrar e reduzir

A biblioteca central do Python possui três métodos chamados mapa , reduzir , e filtro . Esses métodos são possivelmente os melhores motivos para usar funções lambda.

o mapa função espera dois argumentos: uma função e uma lista. Ele pega essa função e a aplica a todos os elementos da lista, retornando a lista de elementos modificados como um objeto de mapa. o Lista A função é usada para converter o objeto de mapa resultante de volta em uma lista.

Veja como usar o mapa sem lambda:

list1 = [2, 4, 6, 8]
print(list1)
def add_five(number):
return number + 5

new_list = list(map(add_five, list1))
print(new_list)

Esta função de mapa é bastante útil, mas poderia ser melhor. a add_five function é passado como um argumento, mas e se você não quiser criar uma função toda vez que usar map? Você pode usar um lambda em vez disso!

Esta é a aparência desse mesmo código, apenas com a função substituída por um lambda:

como verificar a tensão com multímetro
list1 = [2, 4, 6, 8]
print(list1)

new_list = list(map(lambda x: x + 5, list1))
print(new_list)

Como você pode ver, o todo add_five função não é mais necessária. Em vez disso, a função lambda é usada para manter as coisas organizadas.

Com o filtro função, o processo é praticamente o mesmo. Filtro pega uma função e a aplica a todos os elementos de uma lista e cria uma nova lista apenas com os elementos que fizeram com que a função retornasse True.

Primeiro, sem lambdas:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
def greater_than_ten_func(number):
if number > 10:
return True
else:
return False
new_numbers = list(filter(greater_than_ten_func, numbers))

print(new_numbers)

Não há nada de errado com este código, mas está ficando um pouco longo. Vamos ver quantas linhas um lambda pode remover:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
new_numbers = list(filter(lambda x: x > 10, numbers))
print(new_numbers)

A função lambda substituiu a necessidade de todo maior_than_ten_func ! E é feito em cinco palavras simples. É por isso que os lambdas são poderosos: eles reduzem a desordem de tarefas simples.

Finalmente, vamos olhar para reduzir . Reduzir é outra função interessante do Python. Ele aplica um cálculo contínuo a todos os itens de uma lista. Você pode usar isso para calcular a soma total ou multiplicar todos os números:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
def summer(a, b):
return a + b

result = reduce(summer, numbers)
print(result)

Este exemplo precisa importar reduzir de functools módulo, mas não se preocupe, o módulo functools é parte da biblioteca central do Python.

A história é praticamente a mesma com um lambda, não há necessidade de uma função:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)

result = reduce(lambda a, b: a + b, numbers)
print(result)

Coisas a serem observadas com Lambdas em Python

Esses exemplos mostraram como as funções lambda são fáceis, junto com map, filter e reduce, da biblioteca principal do Python. Ainda assim, existem alguns usos em que as funções lambda não ajudam.

Se você estiver fazendo algo mais do que uma tarefa básica, ou quiser chamar outros métodos, use uma função normal. Lambdas são ótimos para funções anônimas isoladas, mas devem ter apenas uma única expressão. Se seu lambda começar a parecer uma expressão regular, provavelmente é hora de refatorar em um método dedicado.

Para mais dicas, verifique nosso guia para programação orientada a objetos em Python e verifique nosso guia de perguntas frequentes para iniciantes em Python.

Compartilhado Compartilhado Tweet O email 3 maneiras de verificar se um e-mail é verdadeiro ou falso

Se você recebeu um e-mail que parece um pouco duvidoso, é sempre melhor verificar sua autenticidade. Aqui estão três maneiras de saber se um e-mail é real.

Leia a seguir
Tópicos relacionados
  • Programação
  • Pitão
  • Tutoriais de codificação
Sobre o autor Joe Coburn(136 artigos publicados)

Joe é graduado em Ciência da Computação pela University of Lincoln, no Reino Unido. Ele é um desenvolvedor de software profissional e, quando não está pilotando drones ou escrevendo música, pode ser encontrado tirando fotos ou produzindo vídeos.

Mais de Joe Coburn

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever