On May 2, 8:03 am, [EMAIL PROTECTED] wrote: > On May 1, 11:10 pm, "Gabriel Genellina" <[EMAIL PROTECTED]> ... > > 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 -- http://mail.python.org/mailman/listinfo/python-list