[Python-Dev] PEP 318 (original) (raw)
Jewett, Jim J jim.jewett at eds.com
Tue Mar 23 15:47:48 EST 2004
- Previous message: [Python-Dev] order of decorator application?
- Next message: [Python-Dev] Timing for Py2.4
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
PEP-318 (Skip):
def func [dec1, dec2, ...] (arg1, arg2, ...): pass
... For short lists it works okay, but for long list it separates the argument list from the function name.
Guido van Rossum:
OTOH, for long argument lists, the "preferred" form has the reverse problem: the decorators are separated from the function name by the long argument list.
I know it is common to look for "what would I call this with".
I suppose staticmethod and classmethod are important because they
change that calling signature.
Are other decorators expected to be something people would scan for?
If not, then having them at the top of the function (so you see them
if you're reading the whole function) is probably enough.
... what is more likely: long argument lists or long lists of decorators? I know that (at least in certain code bases :) long argument lists are common.
I suspect those same code bases will pass long argument lists to several of the individual decorators. Anders Munch's original release example used more than two keywords. I believe the following example is just as reasonable as a long argument list.
Before the def, using an optional second header clause on the funcdef production:
using:
release(version="1.0",
author="me",
status="Well I wrote it so it works, m'kay?",
warning="You might want to use the Foo class instead")
provides_API_myweb
synchronized(lock[23])
def foo(arg1, arg2):
pass
In the middle:
def foo as [release(version="1.0",
author="me",
status="Well I wrote it so it works, m'kay?",
# Line length becomes an issue
warning="You might want to use the Foo class instead"),
provides_API_myweb,
synchronized(lock[23])] (arg1, arg2):
pass
At the end:
def foo(arg1, arg2) as [release(version="1.0",
author="me",
# Line length becomes an issue
status="Well I wrote it so it works, m'kay?",
warning="You might want to use the Foo class instead"),
provides_API_myweb,
synchronized(lock[23])]:
pass
- Previous message: [Python-Dev] order of decorator application?
- Next message: [Python-Dev] Timing for Py2.4
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]