Ir para o conteúdo

Funções Lambda

Definição

Influenciada pela linguagem Lisp, Python suporta uma maneira de definir funções com uma linha: as chamadas funções lambda. Estas funções, muitas vezes não exploradas pelo programador iniciado, são um conceito prático que pode ser usado em conjunto com as filter(), map(), e reduce(). Porém, não são totalmente equivalentes às funções com o mesmo nome das linguagens de programação funcionais como Haskell ou Erlang.

Uma maneira simples de entender este conceito de funções lambda, é a de uma função que pode ser definida na hora, de forma anónima. A sintaxe das lambda é a seguinte:

lambda (argumentos): (operação sobre os argumentos)

Exemplos:

Função Quadrado

def quadrado(x):
  return x*x

print quadrado(2)
4

Usando funções lambda:

lambda x: x*x
(lambda x: x * x)(2)
4

# OU

quadrado = lambda x: x * x # Podemos atribuir um nome à função e chamar onde queiramos.
quadrado(2)
4

Substituir a por b em strings

(lambda frase: return frase.replace('a', 'b'))('programar')
'progrbmbr'

Função Incremento

def incremento(n): return lambda x: x+n # Pode parecer confuso, mas atente-se no uso seguinte

f = incremento(2)

f(30)
32

print incremento(30)(20) # O primeiro argumento é o incremento a dar ao valor definido pelo segundo argumento
50

Numa função normal, definir-se-ia esta função incremento como:

def incremento(x, n): return x+n

Porém, não seria tão flexível como a usando funções lambda, uma vez que se teriam que definir os 2 argumentos de cada vez que se chamasse a função.

Um exemplo com dois argumentos

>>>soma = lambda x,y: x+y
>>>soma(2,3)
5

Referências