setting variables in outer functions
Steven Bethard
steven.bethard at gmail.com
Tue Oct 30 12:11:06 EDT 2007
Neil Cerutti wrote:
> On 2007-10-29, Steven Bethard <steven.bethard at gmail.com> wrote:
>> Hrvoje Niksic wrote:
>>> Tommy Nordgren <tommy.nordgren at comhem.se> writes:
>>>
>>>> Given the following:
>>>> def outer(arg)
>>>> avar = ''
>>>> def inner1(arg2)
>>>> # How can I set 'avar' here ?
>>> I don't think you can, until Python 3:
>>> http://www.python.org/dev/peps/pep-3104/
>> But it definitely does work in Python 3 if you use 'nonlocal'::
>>
>> Python 3.0a1+ (py3k:58681, Oct 26 2007, 19:44:30) [MSC v.1310 32 bit
>> (Intel)] on win32
>> Type "help", "copyright", "credits" or "license" for more
>> information.
>> >>> def f():
>> ... x = 1
>> ... def g():
>> ... nonlocal x
>> ... x = 2
>> ... print(x)
>> ... g()
>> ... print(x)
>> ...
>> >>> f()
>> 1
>> 2
>>
>> That said, I'd like to see the reason you think you want to do
>> this.
>
> It's allows a standard programming idiom which provides a
> primitive form of object oriented programming using closures to
> represent state.
Yeah, that's what I was afraid of. ;-)
STeVe
More information about the Python-list
mailing list