*args is used when the programmer is not sure about how many arguments are going to be passed to a function, or if the programmer is expecting a list or a tuple as argument to the function.
**kwargs is used when a dictionary (keyword arguments) is expected as an argument to the function.