O Python fornece além da instrução def, uma forma de expressão que também gera objetos funções, denominada lambda.
O nome lambda é em função da sua semelhança a uma ferramenta da linguagem Lisp.
Ao contrário da instrução def, onde é criado uma objeto função para ser chamado posteriormente, a expressão lambda retorna o objeto ao invés de atribuir um nome a ele. É por isso que as expressões lambdas são conhecidas como funções anônimas.
Obs.: Opcionalmente pode-se atribuir expressão lambda a um nome.Ex: l = (lambda x: x**2)Basta chamar a expresão lambda pelo objeto l passando como argumento um valor qualquer que será calculado o seu quadrado.
Assim como tem-se uma lista de argumentos no cabeçalho de instrução def, a expressão lambda aceita em sua definição vários argumentos. Apresentando a seguinte forma geral:
lambda argumento1, argumento2,..., argumentoN : expressão
Embora as expressões lambda funcionem exatamente iguais as instruções def, elas se diferem em alguns aspectos:
- Como lambda é uma expressão e não uma instrução ela pode ser usada em lugares onde a instrução def não é permitida sintaticamente pelo Python.
- O miolo lambda possui apenas uma instrução e não um bloco de instruções como def.
As expressões lambda geralmente são utilizadas para projetar funções simples, sendo que, sempre pode-se usar uma instrução def em seu lugar.
Como apresentado, podemos utilizar lambda onde não é permitido o uso das instruções def, tais como: listas e dicionários. A título de exemplificação vamos analisar uma situação fictícia:
Imagine se tivéssemos uma estrutura onde precisássemos armazemar: nome, salário e INSS, de funcionários para que depois fossem persistidos em uma base de dados. Como o campo INSS é calculado de acordo com o salário passado, poderíamos acrescentar uma expressão lambda para realizar este processo, ficando o objeto dicionário com a estrutura:
func = { 'nome': "MARIA",
'salario': 800.00,
'INSS': (lambda salario, aliquota: salario * aliquota)
}Obs.: Este apenas é um exemplo de como funciona a expressão lambda e não há nenhum empregabilidade real.
Conclusão
A expressão lambda é um recurso facilitador oferecido pela linguagem Python. É importante entendermos que o seu uso deve ser moderado pois pode tornar seu código ilegível, confrontando-se assim com as principais características da linguagem.José Mauro da Silva Sandy
Leia Também
- Utilizando DLL's no Python com ctype - Utilização de DLL's em Python
- String em Python - Trabalhando com Strings em Python
4 comentários:
12 de novembro de 2008 às 21:48
Complicado esse lambda. Na verdade, o paradigma funcional é complicado (na minha opinião). Talvez seja tão abstrato que seja de difícil compreensão para quem está acostumado com os paradigmas imperativo/oo/oa.
12 de novembro de 2008 às 23:13
Fala brow!
Com certeza é bem abstrado sim, seria algo mais normal para programadores Lisp. O funcionamento tem a ver com abrangência de listas, coisa que você vai achar bastante interessante, mas ai já é tema para outra discução.
Abraço.
13 de novembro de 2008 às 18:51
Lembro que quando programei no paradigma funcional, usei a linguagem Haskell.
Foi meio traumático... rs
13 de novembro de 2008 às 23:03
Para nós que estamos acostumados com OO e estruturada fica chato de ver as coisas mesmo. Mais que as vezes vale a pena sua empregabilidade.
E mais uma vez OBRIGADO. Valeu mesmo.
Abraço.
Postar um comentário