*args and **kwargs
Python · Intermediate
Definition
*args collects extra positional arguments into a tuple; **kwargs collects extra keyword arguments into a dict.
Lets functions accept flexible inputs and forward arguments.
Diagram
Flowchart
Example: Flexible function
def f(*args, **kwargs):
return sum(args), kwargs
print(f(1, 2, mode='fast'))Output: (3, {'mode': 'fast'})
Key points
- Order: normal, *args, keyword-only, **kwargs
- Use * to unpack lists into calls
Interview questions
What does f(*[1,2]) do?
Unpacks the list so f receives 1 and 2 as separate arguments.