[Python-Dev] IPython, @, and option E from the wiki

Fernando Perez fperez528 at yahoo.com
Sat Aug 7 02:25:47 CEST 2004


Hi all,

since the developers have been kind enough to take ipython's fate into account
in the decorator debate, I figured I'd post an additional piece of info.

Option E on the Wiki http://www.python.org/moin/PythonDecorators is:

E. pie decorator at top of function body syntax 

def foo(arg1,arg2):
    @classmethod
    ...

def bar(low,high):
    @accepts(int,int)
    @returns(float)
    ...

I just want to mention a couple of things regarding this one, in case it
becomes a contender in Guido's mind:

1. It would NOT cause ipython any problems whatsoever.  Ipython only
special-cases @foo at the beginning of a line, so this would be perfectly OK
with ipython.  I don't know if Leo would fare equally well with it.

2. I happen to like it quite a bit, since I already consider (because of the
special role of docstrings) the top area of a function 'special'.  So that
area seems to me a reasonable choice for additional meta-information about the
function's behavior.  I agree decorators are more radical than docstrings, but
at least there's a certain conceptual precedent.  And it seems to leave the
cleanness of the 'def' word which is a nice visible highlight of a function
declaration, without causing the deep indentation issues of other proposals.

3. In this kind of setup, using | instead of @ would be ok as well, I guess:

def bar(low,high):
    |accepts(int,int)
    |returns(float)
    ...

Ok, nobody really wanted my opinion, so feel free to ignore #2/3 :)  The main
point was #1.

Best,

f



More information about the Python-Dev mailing list