zip() or what?

Erik Max Francis max at alcyone.com
Thu Jul 3 13:55:06 EDT 2003


Ray Tomes wrote:

> I can understand the 2nd one, but I don't get the meaning of the * in
> the
> first. Is this like the opposite of putting [] around something or
> what?
> Under what circumstances can an * be used like this, and what is it
> called? - I don't know how to look for it in the docs :-)

f(x) calls the function f with the single argument x.  f(*x) calls f
with the arguments x, which is expected to be a sequence.  The * syntax
comes from defining functions, where a formal argument preceded by *
means, "All the rest of the arguments as a tuple."  So:

>>> def f(*x): print x
... 
>>> s = [1, 2, 3]
>>> f(s)
([1, 2, 3],)
>>> f(*s)
(1, 2, 3)

The old way of writing the function call f(*x) was apply(f, x).

-- 
   Erik Max Francis && max at alcyone.com && http://www.alcyone.com/max/
 __ San Jose, CA, USA && 37 20 N 121 53 W && &tSftDotIotE
/  \ War is like love, it always finds a way.
\__/  Bertolt Brecht




More information about the Python-list mailing list