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)