Python 3.0 nonlocal statement

Rob Williscroft rtw at freenet.co.uk
Tue Jan 6 11:46:02 EST 2009


Matimus wrote in news:2a3d6700-85f0-4861-84c9-9f269791f044
@f40g2000pri.googlegroups.com in comp.lang.python:

> On Jan 6, 5:31 am, Casey <Casey... at gmail.com> wrote:
>> In PEP 3104 the nonlocal statement was proposed and accepted for
>> implementation in Python 3.0 for access to names in outer scopes.  The
>> proposed syntax included an optional assignment or augmented
>> assignment to the outer name, such as:
>>
>> nonlocal x += 1
>>
>> This syntax doesn't appear to be supported in the 3.0 implementation.
>> My question is: was this intentional or was it missed in the initial
>> release?  If it was intentional, is there any plan to support it in a
>> later 3.x release?  I realize it is a very small convenience feature
>> but I have already come across a couple of cases where I use nested
>> functions where it does make the code seem a little cleaner.
>>
>> Regards, Casey
> 
> `nonlocal` should behave just like `global` does. It doesn't support
> that syntax either. So, yes it was intentional. No, there probably is
> no plan to support it in a later release.
> 
> Matt
> 

http://www.python.org/dev/peps/pep-3104/

<quote>
A shorthand form is also permitted, in which nonlocal is prepended to an 
assignment or augmented assignment:

nonlocal x = 3

The above has exactly the same meaning as nonlocal x; x = 3. (Guido 
supports a similar form of the global statement [24].)

</quote>

Searching (AKA googling) for: nonlocal site:bugs.python.org
leads to: http://bugs.python.org/issue4199

Rob.
-- 
http://www.victim-prime.dsl.pipex.com/



More information about the Python-list mailing list