[Python-Dev] PEP 318 - generality of list; restrictions on elements

Moore, Paul Paul.Moore at atosorigin.com
Wed Mar 10 11:52:34 EST 2004


From: Aahz
> That still leaves the question for what *is* allowed within the
> brackets.  AFAICT, the options are
>
> * A single identifier (which must be a callable)
>
> * Comma-separated list of identifiers (which must be callables)
>
> * Arbitrary expression (which must produce a sequence of callables)

For completeness, and the one which I understood to be the case,

* Comma-separated list of arbitrary expressions

I still prefer not to state "*must* be callable" and instead note
that they *will* be called. The former leaves open the question of
what will happen if the "must" is violated. The latter is entirely
clear. It gets called - so it fails just as it would if called in any
other context.

> BTW, have we agreed on the order in which decorators will be applied?

Possibly not. I've been assuming the equivalence

    def f(a,b) [d1, d2, d3]:
        ...

<=>

    def f(a,b):
        ...
    f = d1(f)
    f = d2(f)
    f = d3(f)

but I haven't confirmed this against mwh's patch, and you're right that
it should be stated explicitly.

Paul.

PS I'm rapidly going off Guido's def f [...] (...) suggestion. As Just
   pointed out, I dislike even spaces between the function name and the
   argument list, so decorators there really do grate.



More information about the Python-Dev mailing list