What does the * operator mean in Python, such as in code like zip(*x) or f(**k)?
How is it handled internally in the interpreter?
Does it affect performance at all? Is it fast or slow?
When is it useful and when is it not?
Should it be used in a function declaration or in a call?