[Python-es] Duda con los parametros de funciones lambda.
Rolando Espinoza La Fuente
darkrho en gmail.com
Vie Ago 27 01:43:08 CEST 2010
2010/8/26 Txema Vicente <txema en nabla.net>:
> Buenas.
>
> Tengo un problemilla con las funciones lambda, quiero generar un monton de
> ellas desde un bucle, pero me he topado con que si hago esto:
>
> def multiplica(n,m): return n*m
>
> funciones=[]
>
> # Primera forma
> funciones.append(lambda x: multiplica(1 ,x))
> funciones.append(lambda x: multiplica(2 ,x))
> funciones.append(lambda x: multiplica(3 ,x))
>
> # Segunda forma
> a=4
> funciones.append(lambda x: multiplica(a ,x))
> a=5
> funciones.append(lambda x: multiplica(a ,x))
> a=6
> funciones.append(lambda x: multiplica(a ,x))
Es cosa del scope, que seguro alguien más lo puede explicar en detalle.
Similar a functools.partial() pero te sirve para hacer más operaciones con x:
def multiplica_partial(x):
# do stuff
def inner(a):
return multiplica(a, x)
return inner
luego:
a = 1
funciones.append(multiplica_partial(a))
a = 2
funciones.append(multiplica_partial(a))
Rolando Espinoza La fuente
www.insophia.com
Más información sobre la lista de distribución Python-es