Skip to content

    *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

    f(1, 2, a=3)args (1, 2)kwargs {'a': 3}

    Flowchart

    Define f(*args, **kwargs)Call with any argumentsargs is a tuplekwargs is a dict

    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.

    More Python topics