Funções do Python Lambda com exemplos
Publicados: 2022-06-04Python - Uma introdução
Python é uma linguagem de programação de uso geral extremamente popular. É uma linguagem interpretada de alto nível que enfatiza a legibilidade do código com o uso de recuo significativo. Python é usado por programadores para escrever códigos limpos e lógicos para projetos de qualquer escala.
Python foi concebido na década de 1980 como um sucessor da linguagem de programação ABC por Guido Van Rossum. Desde então, o Python permaneceu uma linguagem de programação popular devido à sua versatilidade.
Funções — Uma introdução
Funções são blocos de código que funcionam quando chamadas podem ser chamadas n vezes em um programa. São instruções de código estruturadas e executam uma função específica, podendo ser usadas a qualquer momento. As funções são fundamentalmente classificadas como:
- Função definida pelo usuário (USF) — Funções personalizáveis que podem ser alteradas de acordo com os requisitos do programador.
- Funções incorporadas (BIF) — Funções que não podem ser personalizadas e têm de ser utilizadas da forma como estão disponíveis.
Aprenda cursos de ciência de dados online no upGrad
Funções do Python Lambda
As funções do Python Lambda são essencialmente anônimas porque não possuem um nome definido. Uma função def é usada para denotar uma função normal em Python. Enquanto isso, a palavra-chave Lambda é usada para definir uma função anônima do Python.
A função Lambda é uma função pequena que pode receber vários argumentos, mas apenas uma expressão. Eles também têm uma sintaxe mais restritiva, mas concisa, do que as funções regulares do Python. A função lambda foi adicionada à linguagem Python em 1994 junto com as funções map (), filter () e reduce ().
Confira nossos EUA - Programas de Ciência de Dados
Programa de certificação profissional em ciência de dados e análise de negócios | Mestrado em Ciência de Dados | Mestrado em Ciência de Dados | Programa de certificação avançada em ciência de dados |
Programa Executivo PG em Ciência de Dados | Bootcamp de programação Python | Programa de Certificação Profissional em Ciência de Dados para Tomada de Decisões de Negócios | Programa Avançado em Ciência de Dados |
Para definir uma função anônima, deve-se usar a palavra-chave lambda como def é usado para funções normais. Existem três partes para uma função anônima definida em Python:
- A palavra-chave lambda
- Parâmetros ou uma variável vinculada
- Corpo da função
Sintaxe
A sintaxe para uma função lambda é a seguinte:
Lambda p1, p2: expressão
O p1 e p2 são os parâmetros aqui. Não há restrição para adicionar parâmetros na função lambda. Você pode adicionar quantos ou quantos quiser. Mas a função lambda é sintaticamente restrita a uma expressão.
Exemplos de função lambda em Python:
Exemplo 1
x =”Função Lambda”
# lambda recebe passe para imprimir
(lambda x : print(x))(x)
Resultado
Função Lambda
Exemplo 2
x = lambda a : a + 10
imprima(x(5))
Resultado
15
Nossos alunos também leram: Aprenda Python Online gratuitamente
Diferenças entre função normal e função lambda
A função lambda possui algumas diferenças sintáticas em relação às funções normais.
- Somente expressões e não declarações são usadas no corpo. Se quaisquer instruções como pass, assert, return ou raise forem usadas, a saída mostrará um SyntaxError.
Exemplo
>>> (lambda x: assert x == 2)(2)
Arquivo “<input>”, linha 1
(lambda x: assert x == 2)(2)
^
SyntaxError: sintaxe inválida
- Uma função lambda só pode existir como uma única expressão. Mesmo que a expressão esteja espalhada por todo o corpo usando várias strings, ela só pode permanecer como uma única expressão.
Exemplo :
>>> (lambda x:
… (x % 2 e 'ímpar' ou 'par'))(3)
'ímpar'
Quando o argumento lambda é ímpar, o código retorna a string ímpar e par quando não é. O código se estende por duas linhas, pois está dentro dos parênteses, mas permanece como uma única expressão.
- A função lambda não oferece suporte a anotações de tipo. Adicionar anotações a uma sintaxe lambda causará um erro de sintaxe.
- IIFE ou Expressão de Função Invocada Imediatamente é uma função executada assim que é definida. Também é conhecida como função anônima de execução automática. IIFE é uma consequência direta da função lambda, pois uma função lambda pode ser chamada conforme é definida.
Agora, vamos ver as principais diferenças entre funções normais e funções lambda:
(Fonte)
Funções Lambda – Prós e Contras
Prós
- Isso torna o código mais legível.
- Ideal para funções que são usadas uma vez.
- Fácil de entender e pode ser usado para explicações lógicas simples.
Contras:
- Várias expressões independentes não podem ser executadas.
- Usar a função lambda não é ideal se um código abranger mais de uma linha em uma função normal (def).
- Todas as entradas, saídas e operações não podem ser explicadas em uma docstring como em uma função normal.
Onde usar Lambdas?
Embora as funções def normais e as funções lambda tenham diferenças importantes, internamente elas são tratadas internamente.
- O uso comum de funções lambda em Python é para programação funcional. Você pode usar lambda na programação funcional para fornecer uma função como parâmetro para uma função diferente.
- Se você precisar reduzir o número de linhas para especificar uma função, lambdas são o caminho a percorrer.
- Lambda também é usado com funções de ordem superior como map(), reduce() etc.
- A resposta a eventos de estrutura de interface do usuário pode ser rastreada usando funções lambda.
Onde se abster de usar funções lambda?
- Escrever funções lambda complicadas não é uma boa prática, pois será difícil descriptografar.
- Evite usar funções lambda para operações recorrentes.
- Se o código não seguir o Guia de Estilo do Python (PEP8).
As funções Lambda são testadas exatamente como funções regulares. Ambos unittest e doctest podem ser usados para isso.
Leia nossos artigos populares sobre ciência de dados dos EUA
Curso de Análise de Dados com Certificação | Curso Online Gratuito de JavaScript com Certificação | Perguntas e respostas mais frequentes da entrevista em Python |
Perguntas e respostas da entrevista do analista de dados | Principais opções de carreira em ciência de dados nos EUA [2022] | SQL vs MySQL – Qual é a diferença |
Um guia definitivo para tipos de dados | Salário de desenvolvedor Python nos EUA | Salário de analista de dados nos EUA: salário médio |
Função Lambda com filtro()
Filter() é uma função interna do Python e lista como argumentos. Filter() é usado quando todos os itens iteráveis estão em uma lista e outra lista é retornada contendo itens para os quais a função é verdadeira.
Exemplo :
# Código Python para ilustrar
# filter() com lambda()
li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61]
final_list = list(filter(lambda x: (x%2 != 0) , li))
print(lista_final)
Resultado:
[5, 7, 97, 77, 23, 73, 61]
(fonte)
Exemplo :
# Programa para filtrar apenas os itens pares de uma lista
minha_lista = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list(filter(lambda x: (x%2 == 0) , my_list))
print(nova_lista)
Resultado
[4, 6, 8, 12]
Função Lambda com map()
A função map é usada quando todos os itens estão na lista e a lista é retornada com os itens retornados por essa função para cada item.
Exemplo : Para dobrar o valor de cada item da lista, o código é o seguinte:
minha_lista = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list(map(lambda x: x * 2 , my_list))
print(nova_lista)
Resultado:
[2, 10, 8, 12, 16, 22, 6, 24]
Exemplo : Para cubo cada número na lista, o código é o seguinte
lista_1 = [1,2,3,4,5,6,7,8,9]
cubo = map(lambda x: pow(x,3), lista_1)
lista (cubo)
Resultado:
[1, 8, 27, 64, 125, 216, 343, 512, 729]
Função Lambda com função reduce()
A função reduce() em Python é uma lista e um argumento. Ele é chamado para retornar uma lista reduzida iterável e nova. É um pouco semelhante à função de adição.
Exemplo 1
Nota: este exemplo é da biblioteca functools.
Para obter a soma de uma lista, o código seria,
# Código Python para ilustrar
# reduce() com lambda()
# para obter a soma de uma lista
de functools importar reduzir
li = [5, 8, 10, 20, 50, 100]
soma = reduz((lambda x, y: x + y), li)
imprimir (soma)
Resultado:
193
Conclusão
O uso de funções lambda em Python tem sido um tópico controverso entre os programadores há muito tempo. Embora seja verdade que lambdas possam ser substituídos por funções internas, compreensões de lista e bibliotecas padrão, também é necessário um entendimento das funções lambda. Ele ajuda você a entender os princípios fundamentais da programação e escrever códigos melhores.
Mesmo que você não use funções lambda pessoalmente, pode haver casos em que você pode encontrá-las em programas de outras pessoas. Portanto, é recomendável que você tenha conhecimento básico das funções lambda de qualquer maneira.
Se você deseja aprender Python completo e aprimorar sua carreira em ciência de dados e análise de negócios, o Programa de Certificação Profissional on-line do upGrad em Ciência de Dados e Análise de Negócios da Top US University - University of Maryland é sua melhor aposta.
O programa oferece a chance de estudar em uma das 100 melhores universidades globais e obter um certificado de Maryland Smith para aumentar suas chances de sucesso no campo. É um curso de 9 meses com acesso a mais de 300 parceiros de contratação, oportunidades de entrevista garantidas para calouros e seis ligações de orientação.
O que são decoradores em Python?
Uma função em Python que recebe o argumento de uma função e retorna outra função é chamada de decorador. É denotado com sintaxe de decorador. Decoradores podem ser aplicados em funções lambda, mas não com a sintaxe do decorador. Geralmente é implementado para fins de depuração. Alternativamente, uma função lambda pode ser usada como decorador, mas não é aconselhável.
O que são argumentos nas funções do Python Lambda?
Funções lambda como funções def normais suportam as diferentes formas de passar argumentos. Estes incluem: Argumento somente de palavra-chave Argumentos de palavra-chave/ Argumentos com nome Varargs/ Lista de argumentos de variável Lista de argumentos de palavra-chave variável.
O que são encerramentos nas funções do Python Lambda?
Fechamentos ou fechamentos léxicos são funções em que todas as variáveis livres, exceto os parâmetros, estão vinculadas a um valor específico no escopo delimitador da função. Os encerramentos podem ser chamados de qualquer lugar. Funções lambda como funções def normais podem ser closures.