On Dec 25, 2010, at 2:59 AM, Stefan Behnel wrote: > Hrvoje Niksic, 24.12.2010 09:45: >> On 12/23/2010 10:03 PM, Laurens Van Houtven wrote: >>> On Thu, Dec 23, 2010 at 9:51 PM, Georg Brandl wrote: >>>> Yes and no -- there may not be an ambiguity to the parser, but still to >>>> the human. Except if you disallow the syntax in any case, requiring >>>> people to write >>>> >>>> nonlocal x = (3, y) >>>> >>>> which is then again inconsistent with ordinary assignment statements. >>> >>> Right -- but (and hence the confusion) I was arguing for not mixing >>> global/nonlocal with assignment at all, and instead having nonlocal >>> and global only take one or more names. That would (obviously) remove >>> any such ambiguity ;-) >> >> I would like to offer the opposing viewpoint: nonlocal x = value is a >> useful shortcut because nonlocal is used in closure callbacks where >> brevity matters. > > I doubt that it really matters so much that one line more kills readability. > It's still a relatively rare use case after all. > > >> The reason nonlocal is introduced is to change the >> variable, so it makes sense that the two can be done in the same line of >> code.
FWIW, I'm entirely opposed to doing an assignment in a nonlocal definition. * It is easily mis-parsed by human (as shown by Georg's examples). * It looks very much like an initialization of a local variable in many languages, but it is not -- the variable has already been initialized in another scope. * It is not clear how to extend it to multiple variables (which we already allow). * It is entirely unnecessary. Just add a real assignment on the following line: local x x = 3, y * We've had global declarations for a very long time and never needed (or wanted) an assignment for it: global x = 3, y * The purported use case is rare (at best). Special cases aren't worth breaking the rules. And the purported goal (saving one line) isn't much of a payoff. * The language moratorium is ending but the aversion to non-essential micro-syntax changes persists. * And, Georg doesn't like it :-) Raymond _______________________________________________ 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