On 6/30/06, Steven Bethard <[EMAIL PROTECTED]> wrote:
> On 6/30/06, Guido van Rossum <[EMAIL PROTECTED]> wrote:
> > On 6/30/06, Steven Bethard <[EMAIL PROTECTED]> 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.

At least with the global statement, the notation for the variable
reference remains the same. E.g. you can write

  x = f(x)

and everybody will understand that the x on the left and right refer
to the same variable.

You'd lose that with

  globals.x = f(x)

IMO that's enough of a drawback to give it a solid -1.

-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)
_______________________________________________
Python-3000 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to