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

Jeff Epler jepler at unpythonic.net
Mon Mar 8 16:29:54 EST 2004


In the suggested syntaxes, the modifiers are not a list.  There's no
list here:
    >>> def f() [wrapper]: pass
just like there's no tuple* in either of these (or the above):
    >>> def f(x, y): pass
    >>> class C(A, B): pass
and you can't just say
    >>> s1 = (x, y)
    >>> def f s1: pass
or
    >>> s2 = (A, B)
    >>> class C s2: pass

I don't think there'll be any trouble becoming accustomed to this new
syntax, with something "a lot like a list literal (but not quite)".

The answer to any of the specific questions you posed is answered
by the PEP's new grammar rule.  As I understand it, the items must be
callable, they may return anything, and they must take the output from
the inner modifier function (a function object in the case of the
earliest-called modifier).  For instance, the following would be
permitted (but probably not encouraged):

    >>> def call(f): return f()
    >>> def pi() [call]:
    ...     return math.atan(1) * 4
    >>> pi
    3.1415926535897931


Jeff



More information about the Python-Dev mailing list