python dynamic scoping question

Greg Krohn ('rot-13') 'tert at pncen.hf'.decode
Mon Apr 21 01:44:59 EDT 2003


"Jp Calderone" <exarkun at intarweb.us> wrote in message
news:mailman.1050900693.8645.python-list at python.org...
> On Sun, Apr 20, 2003 at 07:49:55PM -0500, Greg Krohn wrote:
> > [snip]
> >
> > From the docs:
> >
> > globals() - Return a dictionary representing the current global symbol
> > table. This is always the dictionary of the current module (inside a
> > function or method, this is the module where it is defined, not the
module
> > from which it is called).
> >
> > >>> def f():
> > ...   def g():
> > ...     x = 5
> > ...     globals()['x'] = 5
> > ...   g()
> > ...   print x
> > ...
> > >>> f()
> > 5
> >
> >
> > Cool?
> >
>
>   No.  The right way to do this is:
>
>     def f():
>         def g():
>             global x
>             x = 5
>         g()
>         print x
>

Hm. I guess you can tell I never use the global statement. I though it did
something else. Lesson learned.

>   But isn't the answer to the original poster's question, afaict.

Really? The only differnece I see is 'global x'.

>
>   Jp
>
> --
>         "I quite agree with you," said the Duchess; "and the moral of
> that is -- Be what you would seem to be' -- or, if you'd like it put
> more simply -- Never imagine yourself not to be otherwise than what it
> might appear to others that what you were or might have been was not
> otherwise than what you had been would have appeared to them to be
> otherwise.'"       -- Lewis Carrol, "Alice in Wonderland"
> --
>  up 32 days, 1:02, 3 users, load average: 0.21, 0.21, 0.25
>






More information about the Python-list mailing list