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
