[Python-Dev] Half-baked proposal: * (and **?) in assignments

Delaney, Timothy tdelaney@avaya.com
Sun, 24 Nov 2002 10:57:44 +1100


> From: Gareth McCaughan [mailto:Gareth.McCaughan@pobox.com]
> 
>     a,b,*c = 1,2,3,4,5

FWIW, this has been proposed before, but no one ever bothered to make a PEP
about it.

Each time it's come up, my gut feeling has been that I would really like it.
I've often been in the situation where I'd *like* to pass a variable-length
tuple from a function, but the current way of splitting it up is too clunky.

I hadn't thought of it before, but I do like the suggestion of allowing * in
any location of the LHS. This would of course require that the LHS contains
exactly zero or one * i.e.

    a, b, c = t
    *a, b, c = t    # all leading into a, 2nd-last into b, last into c
    a, *b, c = t    # first into a, all middle into b, last into c
    a, b, *c = t    # first into a, second into b, all trailing into c

would all be legal constructs, but

    *a, *b, c = t
    a, *b, *c = t
    *a, b, *c = t
    *a, *b, *c = t

would all be illegal constructs.

I think the addition of this would lead to a more functional style of
programming. This may be a plus for some people, and a minus for others.

For myself, the idea (including arbitrary placement of the *) is +1.
However, I'm -1 on the idea of additional syntax on the RHS.

Tim Delaney