[pyar] local vs global

Daniel Moisset dmoisset en machinalis.com
Mar Ago 13 14:44:01 ART 2013


Si pasas cosas como locals, no lo vas a ver en scopes anidados, por que los
scopes anidados tienen sus propios locals()

por ejemplo, ponele que el codigo que ejecutas es
code = """
def(f):
   print x
x
"""

exec(code, {'x': 42}) # Imprime 42, pasa el 'x' como global
exec(code, {}, {'x': 42}) # Tira un NameError, porque f() busca una x
global y no lo encuentra)

Entonces si necesitas pasar cosas que se vean desde "todos lados" dentro de
tu codigo, deberían ser globales, si queres que se porten mas como
argumentos a una funcion y sean invisibels adentro deberían ser locales. No
se tu caso de uso pero sospecho que queres lo primero.

D.



2013/8/13 Marcos Dione <mdione en grulic.org.ar>

>
>     estoy haciendo un programita en python3 que arma un entorno de
> ejecución de código; puesto de otra forma, termino llamando a exec(),
> y me asaltó una duda y me dejó en pelotas en una esquina ignota del
> barrio de flores:
>
>     qué diferencia sustancial hay desde el punto de vista del código
> ejecutado con exec() si un objeto dado está definido entre los locals o
> entre los globals pasados a exec()?
>
>     lo único que dice la doc de la función es que los builtins son
> buscados primero en un diccionario llamado __builtins__ entre los
> globals, y que sino usa los del módulo builtins. por otro lado la doc
> del execution model dice que los locals de un módulo son también
> globals de dicho módulo, lo cual me confunde.
>
>     se les ocurre algún ejemplo donde convenga más poner cosas en
> globals y no en locals y/o viceversa?
>
> --
> (Not so) Random fortune:
> Initially I started off [my blog] using Wordpress, but that was later
> purged once I bit the bullet and decided I'd rather be blogless than
> install PHP upon any server I cared about.
>             -- Steve Kemp
> _______________________________________________
> 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/20130813/cfbca0f0/attachment.html>


More information about the pyar mailing list