[pyar] Funciones lambdas dentro de for

Daniel Moisset dmoisset en machinalis.com
Mie Sep 24 12:57:55 ART 2014


2014-09-24 12:49 GMT-03:00 Manuel Kaufmann <humitos en gmail.com>:

> > Una forma de lograr lo que queres es capturar la variable i en una
> variable
> > local del lambda:
>
> > In [7]: for i in (1,2,3):
> >    ...:     functions.append(lambda d, i=i: mifunc(i, d))
>
> Che, gracias. Esto funciona de lujo. Sin embargo, no estoy pudiendo
> entender el porqué.
>
>
Completando la explicacion anterior (leela primero), fijate que esta
definicion que hice yo, al hacer i=i, define un argumento nuevo i, y le
asigna el valor actual de i. eso fuerza que se use el valor actual de i *al
momento de definir la funcion* y se copie al argumento como default. Ahora
el codigo de la funcion no usa el i que modificaste, sino el argumento este
nuevo, que tiene un default con el valor que querías

Saludso,
   D.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140924/ebbf84e1/attachment.html>


More information about the pyar mailing list