[Python-3000] replace globals() and global statement with global builtin object
Steven Bethard
steven.bethard at gmail.com
Sat Jul 1 06:03:04 CEST 2006
On 6/30/06, Guido van Rossum <guido at python.org> wrote:
> On 6/30/06, Steven Bethard <steven.bethard at gmail.com> wrote:
> > BJörn Lindqvist wrote:
> > > I have often wanted something similar to that for global
> > > variables, instead of the global declaration:
> > >
> > > cache = None
> > > def init():
> > > if not global.cache:
> > > global.cache = init_cache()
> >
> > Redirected since this seemed like a Python 3000 kind of request. I
> > like the idea, particularly because it coincides well with my usual
> > uses for global/globals(). Seems like it might require some changes
> > in things like eval and exec that take locals and globals dicts, but I
> > don't know how much of a drawback that is.
>
> You realize that *reading* a global doesn't need the "global." prefix,
> do you? So you could have written "if not cache: global.cache =
> init_cache()" in the function body.
That's also true for the global statement, right? That is, the ``if
not cache`` part would not need a global statement, whlie the ``cache
= init_cache()`` part would.
That said, I agree it does nothing to solve the asymmetry.
STeVe
--
I'm not *in*-sane. Indeed, I am so far *out* of sane that you appear a
tiny blip on the distant coast of sanity.
--- Bucky Katt, Get Fuzzy
More information about the Python-3000
mailing list