Ferramentas de Utilizador

Ferramentas de Site


dev_geral:python:lambda

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

dev_geral/python/lambda.txt · Esta página foi modificada pela última vez em: 2018/05/14 21:37 (Edição externa)