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