[pyar] Funciones lambdas dentro de for

Daniel Moisset dmoisset en machinalis.com
Mie Sep 24 12:41:21 ART 2014


porque i es una sola variable (en tu caso gloabl), entonces la funcion
siempre accede a la misma variable que tiene 3. Si lo hicieras como una
funcion que te devuelve la lista pasaria algo parecido (hay una sola
variable local, proque hubo una sola invocacion a la llamada)

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))

Saludos,

D.


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

> 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
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140924/49fc0d49/attachment.html>


More information about the pyar mailing list