Python variable length arguments

Ever wondered what these *varargs or *kwargs in python functions parameter mean? Let me explain!

varargs

varargs is short for variable arguments. It is declared like this:

def print_person_varargs(name, *vargs):
    pass

You can pass as many arguments as you like. In this case we pass two after the first positional argument ‘name:’

print_person_varargs("Jörn", 40, "Emskirchen")

What can you do with it now?

def print_person_varargs(name, *vargs):
    print(vargs)
    for arg in vargs:
        print(arg)

varargs are combined to a tuple. so it is possible to iterate over them

kwargs

def print_person_kwargs(name, **kwargs):
    pass

kwargs stands for keyword arguments. you have to pass them as named parameters into a function like this:

print_person_kwargs("Jörn", age=38, city="Emskirchen")

They evaluate to a dictionary so you can iterate as well and access the keys and the values:

def print_person_kwargs(name, **kwargs):
    print(kwargs)
    for i, j in kwargs.items():
        print(i, j)