Funções Anônimas: LAMBDA

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

4 comentários:

  Lopes

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.

  José Mauro

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.

  Lopes

13 de novembro de 2008 às 18:51

Lembro que quando programei no paradigma funcional, usei a linguagem Haskell.
Foi meio traumático... rs

  José Mauro

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.