A little tweak to pod2metra's answer enables the function to handle all levels of annidation:
>>> def b(*args):
... x=[]
... for i in args:
... if '__iter__' in dir(i):
... x += b(*i)
... else:
... x.append(i)
... return x
...
>>> b(1, (2, (3, 4)))
[1, 2, 3, 4]
Instead with the function 'a' you had:
>>> a(1, (2, (3, 4)))
[1, 2, (3, 4)]
I know it was not in the intentions of the original question, but maybe this generalization can be useful.