[pyar] local vs global

Marcos Dione mdione en grulic.org.ar
Mar Ago 13 14:42:59 ART 2013


On Tue, Aug 13, 2013 at 01:51:28PM +0200, Marcos Dione wrote:
>     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?

    en el canal me dijeron:

13:56 < marianoguerra> StucKman: minima velocidad de acceso?
13:56 < marianoguerra> es la unica diferencia sustancial
13:57 < marianoguerra> otra es que si lo pones en globals y alguien asigna a una variable con el mismo nombre le hace shadow en lugar de reemplazarla en el contexto
13:57 < marianoguerra> cosa que no deberia cambiar mucho desde la perspectiva del codigo ya que se comporta igual
14:12 < facundobatista> StucKman, marianoguerra, si es global, alguien te la puede pisar "desde afuera", también
14:12 < facundobatista> *en cualquier momento*
14:14 < StucKman> facundobatista: comué?
14:21 < facundobatista> StucKman, nadie te garantiza que la linea 5 imprima '3', incluso si la linea 4 lo hizo http://linkode.org/l/Luw82gp33btXiGeOB2NVY5

    la verdá es que ahora que me pongo a tratar de explicar lo que
dijeron tanto mariano como facu es que me doy cuenta que no les entendí
un soto. lo que a mí me da la impresión es que que un global o un
local para un cacho de código que es ejecutado en su propio environment
se ven y se comportan igual:

--- >8 ---
a= 10
def f(x):
    a= x
    print (a)

f(42)
print (a)
print ('-------')

exec ('f(24); print (a)', locals())
print ('-------')

exec ('f(36); print (a)', {}, locals())
--- 8< ---

    seguro que se me está escapando algo...

-- 
(Not so) Random fortune:
A number of people in IT positions work harder to make it seem like they're busy as beavers 
than doing actual work. Quite often this dysfunction starts at the top: When an IT manager 
doesn't know the technology very well, he or she may hire folks who have no idea what their 
job is other than to show up every day and answer the occasional email, passing questions 
along to others with more technical abilities, or to their contacts at the various hardware 
and software vendors. People like these populate many consulting companies. They rely almost
completely on contractors to perform the actual work, serving as remote hands in a real 
crisis and as part of a phone tree for less pressing issues.
	    -- Paul Venezia


More information about the pyar mailing list