On Sat, 1 Jul 2006, Andrew Koenig wrote: > I'd rather see a simpler rule: = never defines a variable in a surrounding > scope. If you want to affect the binding of such a variable, you have to > define it explicitly in the scope in which you want it. > > Example: > > x = 42 > def f(): > x = 123 # rebinds x as defined above > y = 123 # defines local variable > f() > print x # prints 123 > print y # error -- y not defined > > Yes, I know that rule is too simplistic. But I think I'd still prefer it to > the way things are now.
I agree with you that this is a nicer and more consistent rule. What do you think of the proposal for a keyword to say "don't rebind"? It would achieve the same distinction you're aiming for above, but without the drastic incompatibility with today's Python. This has been previously discussed as "change the meaning of 'global' to mean 'not local'": http://mail.python.org/pipermail/python-dev/2006-February/061568.html http://mail.python.org/pipermail/python-dev/2006-July/066908.html I support this proposal, though i would prefer a clearer keyword such as "outer x" or "nonlocal x". If we can't agree on another keyword (or can't afford to spend one more keyword), i'm willing to support "global" for this purpose. -- ?!ng _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com