Is there a reason that this is fine: >>> def f(a,b,c): ... return a+b+c ... >>> f(1, *(2,3)) 6
but the code below is not? >>> x = (3, 4) >>> (1, 2, *x) == (1, 2, 3, 4) Traceback (most recent call last): File "<string>", line 1, in <fragment> invalid syntax: <string>, line 1, pos 8 Why does it only work when unpacking arguments for a function? Is it because the code below is preferred, and more readable? >>> x = (3, 4) >>> (1, 2) + x == (1, 2, 3, 4) True I've rooted around to see if there is an answer already and found some threads going way back to 1998 (!!), but can't find a concise answer as to why it is limited to args. I don't have a burning desire for this to work, but I just tried it unsuccessfully when building up a tuple and was mildly surprised that it didn't work, so I'm curious why. Maybe it's just that * is strictly for arguments, and trying it for generic tuple unpacking is abuse (which is down the corridor in 12A). -- http://mail.python.org/mailman/listinfo/python-list