[Python-ideas] Tweaking closures and lexical scoping to include the function being defined

Joachim König him at online.de
Thu Sep 29 17:31:16 CEST 2011

On 29/09/2011 17:21, Ethan Furman wrote:
> Paul Moore wrote:
>> Actually, while we're using keywords as decorator names,
>> @with(n=0, lock=threading.Lock())
>> def global_counter():
>>     with lock:
>>         n += 1
>>         return n
>> reads well to me, and avoids the technical/jargon word "nonlocal".
> I think 'nonlocal' is the better choice as it mirrors what nonlocal 
> does inside the function.  Because of its current usage 'with' will 
> generate questions about __enter__ and __exit__.
But what if the decorator is used inside an outer function? Wouldn't 
that be confusing?
What about @func_attrs(...) ? - it would give a hint where the objects 
are actually located.

More information about the Python-ideas mailing list