[Python-3000] replace globals() and global statement with global builtin object

Guido van Rossum guido at python.org
Sat Jul 1 04:53:08 CEST 2006


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.

I'm not sure I like this asymmetry much.

(I'm trying to help you understand that this idea just might not work.)

-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)


More information about the Python-3000 mailing list