The 'expand this here' * operator in python

September 29th, 2009
programming, python, tech
The python docs (2.6.2) say this about the use of *:
5.3.4:

If the syntax *expression appears in the function call, expression must evaluate to a sequence. Elements from this sequence are treated as if they were additional positional arguments; if there are positional arguments x1,..., xN, and expression evaluates to a sequence y1, ..., yM, this is equivalent to a call with M+N positional arguments x1, ..., xN, y1, ..., yM

7.6:

If the * is present [in the function definition argument list], it is initialized to a tuple receiving any excess positional parameters, defaulting to the empty tuple
This is very handy, but is also limited. In python 3.0, PEP 3132 added some related syntax:
first, *rest = seq
a, *b, c = range(5)
This is again, handy but limited. This star syntax only works in these two cases: functions (star-args) and assignment targets. There are logical extensions that make a lot of sense to me, though. If one can do:
first, *rest = seq
then I want to be able to do:
seq = first, *rest
While the following is ambiguous and so clearly needs to be illegal:
first, *some, *rest = seq
this is not ambiguous:
seq = first, *some, *rest
While we're at it, lets make the following legal:
foo(first, *some, *rest)
All these changes together would make for a very consistent and powerful interpretation of * as 'expand this sequence here'.

Update 2013-04-05: Danner points out a 2008 patch. This was put on hold because of the moratotium (to "allow non-CPython implementations to 'catch up'") but with 3.3 out I think the moratorium is over. I just poked the bug.

Comment via: substack

Recent posts on blogs I like:

Food Fridays: Blueberry Cobbler

Here is my blueberry cobber recipe, by request of William Friedman.

via Thing of Things January 16, 2026

Why I Don't Think My Braces Were Worth It

A couple weeks ago, I got my braces off. I kind of wish I had never had them, though. When I was younger, two of my teeth were sticking out, and they looked kind of funny. I thought that my teeth were just fine, and I didn't want to get braces. But s…

via Anna Wise's Blog Posts January 3, 2026

Family Christmas

Unlike many families my family celebrates Christmas with really really a lot of our family. This past year there were about 29 people at my Grandfather's house in the week around Christmas. I know what you're thinking: how does that work? It's…

via Lily Wise's Blog Posts January 3, 2026

more     (via openring)