os.path.join

Ant antroy at gmail.com
Wed May 2 03:36:29 EDT 2007


On May 2, 8:03 am, half.ital... at gmail.com wrote:
> On May 1, 11:10 pm, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
...
> > I think it's a bug, but because it should raise TypeError instead.
> > The right usage is os.path.join(*pathparts)
...
> Wow.  What exactly is that * operator doing?  Is it only used in
> passing args to functions?  Does it just expand the list into
> individual string arguments for exactly this situation?  Or does it
> have other uses?

It's used for unpacking a collection into arguments to a function.
It's also used at the other end for receiving a variable length set of
arguments. i.e.

>>> x = (1,3)
>>> def add(a, b):
        return a + b

>>> add(*x)
4
>>> def add(*args):
        return reduce(int.__add__, args)

>>> add(1,2,3,4,5,6)
21
>>> add(*x)
4

The same sort of thing holds for keyword arguments:

>>> def print_kw(**kw):
         for k in kw:
             print kw[k]


>>> print_kw(a=1, b=2)
1
2
>>> d = {'a': 1, 'b': 10, 'c': 100}
>>> print_kw(**d)
1
100
10





More information about the Python-list mailing list