Unintended consequences of the decorator notation

Spoke yesterday with Bill Punch, a CS professor at MSU who is using Python for intro CS. He told me his tale of tracking down what an '@' sign meant (it's a decorator, http://docs.python.org/ref/function.html). Needless to say it took him quite a while to google about and figure out what it did, because searching for '@' and 'python', in any combination you care to name, turns up many irrelevant hits.

A neat example of unintended consequences ;).

--titus

p.s. Incidentally, '@' really should be in the index, no? It's not there: http://docs.python.org/ref/genindex.html, http://docs.python.org/lib/genindex.html.


Legacy Comments

Posted by Kumar McMillan on 2007-06-20 at 11:31.

This reminds me of my newbie days; imagine staring at :    def
foo(**args, ***kw):    pass    and trying to figure out what * and **
do!  Well luckily searching "python def asterisk" brings up something
useful now but "python def star" does not.      Maybe we should write
blog posts entitled "python at sign" and "python def star" :)

Posted by Greg on 2007-06-20 at 13:05.

My friend Matt says decorators are a way to make your code harder to
read :-)    In all honesty, I never got used to the syntax, it just
feels too "magical" to me.  I put this @ thing and now my function
gets wrapped by another function?  Kinda spooky..  I'm not sure why
everyone else loves them?  Any ideas?

Posted by Titus Brown on 2007-06-20 at 14:34.

Greg -- there's a long discussion of the rationale behind the syntax
in the PEP, <a href="http://www.python.org/dev/peps/pep-0318/">http://
www.python.org/dev/peps/pep-0318/</a>...

Comments !

social