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.

Recent posts on blogs I like:

The Weekly Anthropocene Interviews Me

I have been interviewed by The Weekly Anthropocene. It’s sort of a grab bag of all the topics we talk about on this blog—some effective altruism, some general life advice. I really enjoyed getting to talk to Sam Matey, who’s a very smart guy. Check it out!

via Thing of Things January 6, 2025

Dance Calling By The Numbers, 2024

This post contains javascript content and must be viewed on site.

via Harris Lapiroff January 6, 2025

Handling emotions better over time

Developing skills and mellowing with age The post Handling emotions better over time appeared first on Otherwise.

via Otherwise January 2, 2025

more     (via openring)