2010/8/26 Txema Vicente <[email protected]>:
> 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
_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/