Steven Bethard wrote: > On 11/1/06, Ka-Ping Yee <[EMAIL PROTECTED]> wrote: >> I think a fairer survey example would be something like this: >> >> n = 1 >> def f(): >> n = 2 >> def g(): >> global n = 99 >> return n >> g() >> >> f() >> print n >> >> Which 'n' do you expect g() to change? > > The only reason I didn't use that in the first place is that is seems > extremely unlikely in real code. Who uses the same name for a > module-level binding and a function-local binding? > > So yes, that's the corner case, but I contend that the corner case > will almost never come up.
A much more likely corner case is (using existing syntax): def f(): def g() global n n = 99 return n g() f() print n What does this do? It depends on if f() has a binding of "n". If it does, the above throws a NameError. If it doesn't, it prints 99. For "nonlocal", this is a non-issue - it's a syntax error. But if we reuse "global", the nested function is context-dependent. If "global" were to change in Py3K to require an existing binding at the time the "global" keyword was executed, this would then have the semantics of "nonlocal" and be context-independent again. So I think any proposal to reuse "global" has to include these semantics. Tim Delaney _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com