[pyar] Funciones lambdas dentro de for

fisa fisadev en gmail.com
Mie Sep 24 12:37:49 ART 2014


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


More information about the pyar mailing list