[Python-Dev] nonlocal x = value

Hrvoje Niksic hrvoje.niksic at avl.com
Fri Dec 24 09:45:56 CET 2010


On 12/23/2010 10:03 PM, Laurens Van Houtven wrote:
> On Thu, Dec 23, 2010 at 9:51 PM, Georg Brandl<g.brandl at gmx.net>  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.  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.

As for global x = value being disallowed, I have been annoyed at times 
with that, so that sounds like a good argument to change both.

Requiring the parentheses for tuple creation sounds like a good 
compromise for resolving the ambiguity, consistent with similar 
limitations of the generator expression syntax.


More information about the Python-Dev mailing list