[pyar] Funciones lambdas dentro de for

Fernando Pelliccioni fpelliccioni en gmail.com
Mie Sep 24 16:15:52 ART 2014


2014-09-24 12:41 GMT-03:00 Angel Java Lopez <ajlopez2000 en gmail.com>:

> Si, es lo que pasa en otros lenguajes con closure de ese tipo, como
> JavaScript.
>
> Lo que hago (disculpen, ni idea de Python) es, en JavaScript, el viejo
> truco del makefn:
>
> function mifunc(static, dynamic) {
>   console.log(static, dynamic);
> }
>
> function makefn(static) {
>     return function (dynamic) {
>         return mifunc(static, dynamic);
>     }
> }
>
> var functions = [];
>
> for (var k = 1; k <= 3; k++)
>     functions.push(makefn(k));
>
>
Ah mirá!, ¿no hay forma de capturar el Environment en Javascript?

Una pregunta al margen, perdón a la gente de la lista.
¿Conocés alguna lista de Javascript onda Pyar? Hace un tiempo estuve
buscando, y creo que me subscribí a una, pero está muerta.
Gracias!


>
> 2014-09-24 12:37 GMT-03:00 fisa <fisadev en gmail.com>:
>
>> Porque cada lambda está teniendo una clausura a la variable "i", que
>>
>> se crea para el for, pero es la misma variable que se usa a lo largo
>> de todos los ciclos. Todas tus funciones tienen clausuras a esa misma
>> variable, que al final termina teniendo el 3.
>>
>> El día 24 de septiembre de 2014, 12:34, Manuel Kaufmann
>> <humitos en gmail.com> escribió:
>> > Hola lista!
>> >
>> > Ahora sí que estoy descolocado. Esperaba un resultado diferente a esto
>> > y aún no entiendo su porqué.
>> >
>> >>>> def mifunc(static, dynamic):
>> > ...   print static, dynamic
>> > ...
>> >>>> functions = []
>> >>>> for i in (1,2,3):
>> > ...   functions.append(lambda d: mifunc(i, d))
>> > ...
>> >>>> functions[0](55)
>> > 3 55
>> >>>> functions[1](55)
>> > 3 55
>> >>>> functions[2](55)
>> > 3 55
>> >>>>
>> >
>> > Yo esperaba los resultados:
>> > 1 55
>> > 2 55
>> > 3 55
>> >
>> > ¿Porqué esto no es así?
>> >
>> > --
>> > Kaufmann Manuel
>> > -- http://elblogdehumitos.com.ar
>> > _______________________________________________
>> > pyar mailing list pyar en python.org.ar
>> > http://listas.python.org.ar/listinfo/pyar
>> >
>> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>> >
>> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>>
>>
>> --
>> fisa  -  Juan Pedro Fisanotti
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140924/58837d36/attachment.html>


More information about the pyar mailing list