[Python-ideas] Decorator syntax restriction

Stephen J. Turnbull stephen at xemacs.org
Sat Oct 10 13:15:26 CEST 2009


geremy condra writes:
 > On Sat, Oct 10, 2009 at 2:12 AM, Carl Johnson
 > <cmjohnson.mailinglist at gmail.com> wrote:

 > > One might also write:
 > >
 > > @debug if debug else lambda f: f
 > > def f....
 > >
 > > Is that too confusing though? My instinct says it's fine, but maybe
 > > others disagree. Still, I think the restriction should be taken off.
 > > We're all adults, etc.
 > >
 > >  --Carl
 > 
 > I'm moving towards +1 on this- the above looks very useful to
 > me.

Does either of the suggestions for debug actually "work",
stylistically?  Specifically, consider the preparatory code required.
This looks awful to me:

def debug (f):
    return decorate_for_debug(f)
debug = False                    # gag, retch, puke

@debug if debug else lambda f: f
def foo():
    pass

The comment may be *little* extreme, but surely that's not very
beautiful in your eyes?  Isn't

debug = False
def instrument (f):
    return decorate_for_debug(f) if debug else f

@instrument
def foo():
    pass

preferable?  Caveat: I'm of the school that lambda isn't very
beautiful itself, not in Python.



More information about the Python-ideas mailing list