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

Stephen J. Turnbull stephen at xemacs.org
Sun Oct 2 10:16:59 CEST 2011


Nick Coghlan writes:

 > It isn't quite - the name binding doesn't happen until *after* the
 > decorator chain has been invoked, so the function is anonymous while
 > the decorators are executing.

As I understand the issue here, as far as the decorators are
concerned, the reference passed by the decorator syntax should be
enough to do any namespace manipulations that are possible in a
(non-magic) decorator.  Am I missing something?

That is, in

 > the following closure idiom:
 > 
 >     def <anon1>():
 >         NAME = EXPR
 >         def FUNC(ARGLIST):

surely the FUNC above ...

 >             """DOC"""
 >             nonlocal NAME
 >             BODY
 >         return FUNC

... doesn't need to be the *same identifier* as the FUNC below?

 >     FUNC = <anon1>()

Isn't magic needed solely to inject the nonlocal statement(s) into the
definition of FUNC inside <anon1> at compile-time?



More information about the Python-ideas mailing list