sometimes you won' know ahead of time how many arguments function needs to accept fortunatelypython allows function to collect an arbitrary number of arguments from the calling statement for exampleconsider function that builds pizza it needs to accept number of toppingsbut you can' know ahead of time how many toppings person will want the function in the following example has one parameter*toppingsbut this parameter collects as many arguments as the calling line providespizza py def make_pizza(*toppings)"""print the list of toppings that have been requested ""print(toppingsmake_pizza('pepperoni'make_pizza('mushrooms''green peppers''extra cheese'the asterisk in the parameter name *toppings tells python to make an empty tuple called toppings and pack whatever values it receives into this tuple the print statement in the function body produces output showing that python can handle function call with one value and call with three values it treats the different calls similarly note that python packs the arguments into tupleeven if the function receives only one value('pepperoni',('mushrooms''green peppers''extra cheese'now we can replace the print statement with loop that runs through the list of toppings and describes the pizza being ordereddef make_pizza(*toppings)"""summarize the pizza we are about to make ""print("\nmaking pizza with the following toppings:"for topping in toppingsprint("toppingmake_pizza('pepperoni'make_pizza('mushrooms''green peppers''extra cheese'the function responds appropriatelywhether it receives one value or three valuesmaking pizza with the following toppingspepperoni making pizza with the following toppingsmushrooms green peppers extra cheese functions