Michael Urman wrote:
>> def weird(local=True):
>> if local:
>> n = 1
>> else:
>> global n # [ or nonlocal n, in Nick's ]
>> n += 1
>> return n
>
> I'm not sure what you're both trying to explain here. First off, the
> above code yields a SyntaxWarning. Secondly all its accesses to n are
> global accesses. The global keyword is currently a modifier for the
> whole function. Thus the local parameter is misleading; it should be
> called reset.
We weren't really talking about global/nonlocal in general - I was merely
pointing out the specific problem that permitting the shortcut form
(declaration & assignment on the same line) increases the temptation to put
the scope declaration somewhere other than at the start of the function.
As you point out, the compiler won't care (beyond possibly issuing a warning
like the one you mention), but it can be misleading for human readers and
writers.
Cheers,
Nick.
--
Nick Coghlan | [EMAIL PROTECTED] | Brisbane, Australia
---------------------------------------------------------------
http://www.boredomandlaziness.org
_______________________________________________
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