Tabela de Conteúdos
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