::  Posts  ::  RSS  ::  ◂◂RSS  ::  Contact

The 'expand this here' * operator in python

September 29th, 2009
python, programming  [html]
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:

Hedonic asymmetries

Creating really good outcomes for humanity seems hard. We get bored. If we don’t get bored, we still don’t like the idea of joy without variety. And joyful experiences only seems good if they are real and meaningful (in some sense we can’t easily pin down…

via The sideways view January 26, 2020

Live the questions now

Here’s some advice that my Godmother, Lynne Caldwell, gave me a few years ago. I found it again the other day and it struck me that at least I understand its wisdom now. She really did get my problem. It feels like he’s speaking directly to me. It’s from …

via Holly Elmore January 23, 2020

International Links: a Revision

In 2011, I wrote a post arguing that international links underperform. I gave examples, using many links nearly all of which have rotted in the 8.5 years since, showing that the ridership on various air and rail city pairs was lower if they were in two di…

via Pedestrian Observations January 22, 2020

more     (via openring)

More Posts:


  ::  Posts  ::  RSS  ::  ◂◂RSS  ::  Contact