tag:blogger.com,1999:blog-1437970354124720603.post6742134656395234413..comments2023-10-12T07:32:42.033-03:00Comments on aurelianito: Bindings extraños en pythonaurelianitohttp://www.blogger.com/profile/16123954643930749058noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-1437970354124720603.post-58572309513577007082014-04-28T19:10:07.432-03:002014-04-28T19:10:07.432-03:00Realmente no recuerdo haberme fijado alguna vez co...Realmente no recuerdo haberme fijado alguna vez como funciona exactamente <i>locals()</i>. Pero creo que c/frame conoce a su <i>locals</i>.<br /><br />Además, cuando se compila una función, se setupea, y me imagino que lo que te está pasando es que al compilar la primer función, como no la usa, no se preocupa por ponerla en <i> ese </i> locals en particular.<br /><br />Entonces, creo que hay dos respuestas a tu pregunta:<br /><br />La primera es: lo tenés con, como bien vos decís: <i>globals() + locals()</i> Ya que si usaran otra cosa, el compilador de funciones, la habría puesto en estos dics..<br /><br />La segunda es: podrías ver que variables potenciales tendrías disponibles, usando traceback, para recorrer el stack-trace y tomar los locals de c/frame superior....... (y sus globals?)..tenukihttps://www.blogger.com/profile/03207555194934755045noreply@blogger.comtag:blogger.com,1999:blog-1437970354124720603.post-80851123885561012072014-04-28T18:08:49.217-03:002014-04-28T18:08:49.217-03:00Mi pregunta es cómo hago para obtener el diccionar...Mi pregunta es cómo hago para obtener el diccionario de todas las posibles rvalues en una función. Por ahora no sé cómo hacerlo. globals() + locals() no encuentra al "a" del primer ejemplo.aurelianitohttps://www.blogger.com/profile/16123954643930749058noreply@blogger.comtag:blogger.com,1999:blog-1437970354124720603.post-29080221784085129942014-04-28T17:35:30.192-03:002014-04-28T17:35:30.192-03:00Otro ejemplo de comportamiento raro, tambien desde...Otro ejemplo de comportamiento raro, tambien desde Python 2.5:<br /><br />>>> def a():<br />... print map<br />... map = 0<br />... print map<br />...<br />>>> a()<br />Traceback (most recent call last):<br /> File "", line 1, in <br /> File "", line 2, in a<br />UnboundLocalError: local variable 'map' referenced before assignment<br />Mario Vilashttps://www.blogger.com/profile/09241062648860694761noreply@blogger.comtag:blogger.com,1999:blog-1437970354124720603.post-18982654281893293202014-04-28T17:33:39.948-03:002014-04-28T17:33:39.948-03:00Eso creo que es porque en el segundo ejemplo estás...Eso creo que es porque en el segundo ejemplo estás creando una variable "a" en el scope de la funcion embebida. Si es asi deberias ver este comportamiento en Python 2.5 tambien, pero no en versiones anteriores.Mario Vilashttps://www.blogger.com/profile/09241062648860694761noreply@blogger.com