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

Ethan Furman ethan at stoneleaf.us
Thu Sep 29 17:00:38 CEST 2011


Nick Coghlan wrote:
>     @nonlocal(n=0, lock=threading.Lock())
>     def global_counter():
>         with lock:
>             n += 1
>             return n
> 
> It's presence in the decorator list hints that this is something
> happening outside the functions ordinary local scope, as well as
> indicating when the initialisation happens. The 'nonlocal' then ties
> in with how they behave from the point of view of the code in the
> function body.

I think this fits in nicely with the @staticmethod and @classmethod 
decorator usage as well.

~Ethan~



More information about the Python-ideas mailing list