Funções lambda do Python com exemplos práticos
Publicados: 2021-06-21As funções lambda do Python são aquelas funções que são pequenas e são definidas sem um nome. Em python, a palavra-chave 'def' é usada para definir uma função. No entanto, no caso de funções anônimas, a palavra-chave 'lambda' é usada para definir essas funções. Portanto, o nome “funções lambda. Pode haver um nome ou não atribuído às funções.
Em comparação com as funções regulares em python, as funções lambda são curtas.
funções lambda foram adicionadas à sintaxe de linguagens de programação como Python, Java, C++, C#, etc. têm em sua sintaxe. Embora seja usado como um conceito central em Linguagens de ML ou LISP.
O artigo se concentrará no conceito de funções lambda do python e seu uso.
Com base no tipo de linguagem de programação, as funções lambda podem ser usadas alternadamente com os seguintes termos:
- Funções anônimas
- Funções lambda
- Expressões lambda
- Abstrações lambda
- Forma lambda
- Literais de função
Índice
Cálculo Lambda
O cálculo lambda é um modelo de computação baseado no qual as expressões lambda são construídas. O cálculo lambda é baseado na pura abstração e foi formalizado por Alonzo Church. Também conhecido como abstrações lambda, refere-se ao modelo original criado por Alonzo Church.
Qualquer computação pode ser codificada por este conceito.
Sintaxe da função lambda:
A sintaxe a seguir é usada ao usar as funções lambda em python.
argumentos lambda: expressão
Pode haver qualquer número de argumentos na função lambda em python . Mas as funções podem ter apenas uma expressão. Essa expressão é avaliada primeiro e depois é retornada. O uso de funções lambda encontra-se onde quer que haja um requisito dos objetos de função.
Considerando um caso em que uma função anônima com dois argumentos é definida com lambda, mas não vinculada a nenhuma variável:
lambda x, y: x + y
Aqui, os dois argumentos são tomados pela função e a soma é retornada.
Existem algumas características mostradas por uma função lambda:
- Não pode haver nenhuma instrução no corpo da função lambda, mas pode conter apenas expressões.
- O código de execução é apenas uma única linha.
- As anotações de tipo não são suportadas pela função lambda em python .
- A invocação imediata é permitida.
As declarações não podem ser usadas
Como mencionado, não pode haver nenhuma instrução ao definir funções lambda. Se o usuário usar instruções como pass, return, raise ou assert, haverá uma exceção SyntaxError. O resultado da exceção pode ser mostrado através do código abaixo
Fonte
No código acima, ocorreu um erro de sintaxe quando foi analisado o código que continha a instrução assert no corpo da função lambda.
função lambda contém apenas uma única expressão
Em contraste com todas as funções normais padrão em python, uma função lambda em python pode conter apenas uma única expressão. O corpo da função lambda pode ter a expressão espalhada por toda parte através do uso de várias linhas entre parênteses. No entanto, ainda permanece como uma única expressão.
Fonte
A string “odd” é retornada quando há um argumento “odd” enquanto a string “even” é retornada quando há um argumento “even”. Duas linhas são usadas no código acima, pois estão entre parênteses. Mas permanece como uma única expressão.
Digite anotações
Com a disponibilidade de “dicas de tipo” em python, as funções normais agora estão sendo preferidas às funções lambda em python. Com a disponibilidade de ferramentas como mypy, pyre, etc. o erro de tipo pode ser detectado com full_name(). O erro de sintaxe associado à função lambda é gerado durante o tempo de execução.
Execução de função invocada imediatamente (IIFE)
O recurso não pode ser usado fora de um interpretador python. A definição da expressão lambda em python pode ser passada para funções de ordem superior como map(), etc.
Argumentos em uma função lambda
Diferentes maneiras são suportadas em expressões lambda python para a passagem dos argumentos como:
- Argumentos posicionais
- Argumentos nomeados também conhecidos como argumentos de palavras-chave
- Lista variável de argumentos que também é chamada de varargs.
- Lista de variáveis de argumentos de palavras-chave
- Argumentos com apenas palavras-chave.
Decoradores em uma expressão Python Lambda
O decorador pode ser definido como uma implementação de padrão que permite adicionar um comportamento a uma classe ou função. A sintaxe de @decorator é usada como um prefixo para uma função para expressar um decorador em python
Somente com o argumento 'Python', a função_decorada() é impressa. O comportamento adicional que é impresso é 'Chamando a função 'decorated_function'.
Python permite adicionar um decorador a uma função lambda, embora o uso da sintaxe @decorator não seja necessário. O decorador atua como uma função que chama a função lambda.
<lambda> aparece onde a função lambda é identificada. Enquanto, no caso de uma função normal, ou seja, add_two, ela é identificada claramente.
Para fins de depuração, as funções lambda podem ser decoradas dessa maneira.
Fecho
Closure() em python é definido como uma função onde as variáveis livres, exceto os parâmetros que são usados na função, são vinculadas a valores específicos que são definidos dentro do escopo da função. Podemos chamar os encerramentos de qualquer lugar. As funções lambda em python podem atuar como encerramentos da mesma forma que as funções normais atuam como um encerramento.
Uso de funções lambda
- Sempre que precisarmos usar uma função por um tempo menor, as funções lambda são usadas nesse caso.
- Para a passagem de funções para uma função de uma função de ordem superior, são aplicadas funções lambda. As funções são passadas como argumentos para essas funções de ordem superior.
- As funções lambda em python podem ser usadas com outras funções internas como map(), etc.
Testando funções lambda
Através do uso dos módulos doctest e unittest, as funções lambda em python podem ser testadas:
- Os módulos Unittest testam as funções lambda como as funções regulares.
- No caso do módulo doctest, o código python é extraído de docstring , para a execução do teste. A sintaxe da função lambda não permite a docstring . Mas, uma string pode ser atribuída ao elemento _doc_ do lambda que está sendo nomeado.
Exemplos de funções do Python Lambda
No código abaixo, uma função com o nome “identidade” é definida onde um argumento é retornado. Ele é definido como uma função padrão do python através do uso da palavra-chave “def”.
>>> def identidade (x);
….. retornar x
Aqui, x é tomado como argumento pela função “identidade” e ao ser invocado retorna o argumento.
Escrever o mesmo código usando lambda será:
lambda x: x
A expressão consiste em três partes: Lambda como palavra-chave, x que é então uma variável vinculada e X que é o corpo do código.
- A variável vinculada refere-se ao argumento que é passado para uma função lambda. No entanto, variáveis livres são aquelas que não estão vinculadas e podem ser referenciadas no corpo da expressão. Uma constante pode ser uma variável livre ou variáveis definidas no escopo da função.
A expressão acima pode ser elaborada como
>>> lambda x: x + 1
Aqui, a função está adicionando 1 ao argumento. A função pode ser adicionada a um argumento enquanto envolve tanto a função quanto o argumento por meio do uso de parênteses.
>>>(lambda x: x + 1)(2)
3
Para calcular o valor em uma expressão, é aplicada uma estratégia de redução. Como no exemplo acima, a variável vinculada “x” pode ser substituída pelo argumento 2.
(lambda x: x + 1 )(2) = lambda 2: 2 + 1
= 2 + 1
= 3
A função lambda sendo uma expressão, a nomeação pode ser feita e o código acima pode ser reescrito como
>>> add_one = Lambda x : x + 1
>>> add_one(2)
3
Isso é equivalente a escrever:
def add_one(x):
retornar x + 1
Um único argumento é obtido pelas funções lambda. Além disso, ao definir a função lambda em python , não há parênteses em torno das funções.
Para passar mais de um argumento para uma função lambda python , os argumentos são listados e separados pelo uso de uma vírgula (,). Não deve haver parênteses ao listar os argumentos. Um exemplo de funções multi-argumento é mostrado abaixo:
Aqui, dois argumentos são usados pela função lambda em full_name. Uma string é retornada pela função que interpola o primeiro e o último parâmetros. O código mostra que ao definir as funções lambda, não houve uso de nenhum parêntese. A chamada da função lambda segue a mesma forma que a de uma função padrão em python, ou seja, usando parênteses que circundam os argumentos.
Funções lambda do Python com filter()
Em python, a função filter() , aceita um argumento como uma lista e uma função. Através dos itens da lista, pode-se chamar a função que retorna uma nova lista de itens. A função para esta lista recém-criada é avaliada como True .
Um exemplo de função filter() é mostrado abaixo que é usado para filtrar números pares contidos em uma lista.
Fonte
A saída gerada pelo programa é a nova lista: [4, 6, 8, 12].
Função lambda do Python com map()
Uma lista e uma função são tomadas como um argumento na função python map(). Todos os itens contidos na lista chamam a função que retorna uma lista recém-criada com itens que são retornados pela função.
Conclusão
As funções lambda do Python são aquelas funções que são de linha única e são declaradas sem um nome, ou seja, uma função anônima. Vários números de argumentos podem ser passados para uma função lambda que pode ter apenas uma expressão. Às vezes, a função lambda pode ser passada para outras funções como um argumento. A função quando definida com a palavra-chave 'def' em python pode se comportar como uma função regular.
O artigo, portanto, explicou os conceitos de funções lambda em python, sua aplicação com outras funções e também alguns exemplos. Se você estiver ainda mais interessado em ganhar experiência sobre a linguagem de programação e dominar suas habilidades de codificação, você pode conferir o curso “ Executive PG Program in Data Science ” que é oferecido pelo upGrad . Ele é especialmente projetado para todos os profissionais de nível básico de 21 a 45 anos de idade que desejam alcançar suas habilidades de codificação em ciência de dados. Se você está disposto a dar um passo em direção aos seus sonhos, avance e confira os benefícios do curso. Com projetos práticos da indústria, o curso fornecido pelo IIIT-B foi projetado para atender às suas necessidades e prepará-lo para as principais indústrias que estão por vir.
Qual é a diferença entre uma função normal e uma função lambda?
Sabemos que uma função em Python é definida usando a palavra-chave def. Da mesma forma, uma função lambda é definida usando a palavra-chave lambda. Considere o exemplo abaixo para entender profundamente a diferença entre os dois:
# Normal function def sq(x): return x*x # Lambda function lambda_sq = lambda x: x*x # Chamando a função normalmente # Defined function print(sq(10)) # usando a função lambda print(lambda_sq(10)) }
O exemplo acima ilustra 2 funções calculando o quadrado de um número. Sem lambda, temos que criar uma função sq(x), e então retornar o quadrado. Por outro lado, com lambda, toda a função foi reduzida a uma única linha. O Lambda não requer uma instrução de retorno.