There is a special way of receiving parameters to a function as a tuple or a dictionary using the * or ** prefix to the parameter name respectively. This is useful for receiving a variable number of arguments in a function.
>>> def sum(number, *args): ... '''Return the sum the number of args.''' ... total = 0 ... for i in range(0, number): ... total += args[i] ... return total ... >>> sum(3, 10, 20, 30) 60 >>> sum(2, -5, -10) -15 >>>
Due to the * prefix on the args variable, all the extra arguments passed to the function are stored in args as a tuple. If a ** prefix had been used instead, the extra parameters would have been stored in a dictionary.