show_completed_models(completed_modelsat we define the function print_models(with two parametersa list of designs that need to be printed and list of completed models given these two liststhe function simulates printing each design by emptying the list of unprinted designs and filling up the list of completed models at we define the function show_completed_models(with one parameterthe list of completed models given this listshow_completed_models(displays the name of each model that was printed this program has the same output as the version without functionsbut the code is much more organized the code that does most of the work has been moved to two separate functionswhich makes the main part of the program easier to understand look at the body of the program to see how much easier it is to understand what this program is doingunprinted_designs ['iphone case''robot pendant''dodecahedron'completed_models [print_models(unprinted_designscompleted_modelsshow_completed_models(completed_modelswe set up list of unprinted designs and an empty list that will hold the completed models thenbecause we've already defined our two functionsall we have to do is call them and pass them the right arguments we call print_models(and pass it the two lists it needsas expectedprint_models(simulates printing the designs then we call show_completed_models(and pass it the list of completed models so it can report the models that have been printed the descriptive function names allow others to read this code and understand iteven without comments this program is easier to extend and maintain than the version without functions if we need to print more designs later onwe can simply call print_models(again if we realize the printing code needs to be modifiedwe can change the code onceand our changes will take place everywhere the function is called this technique is more efficient than having to update code separately in several places in the program this example also demonstrates the idea that every function should have one specific job the first function prints each designand the second displays the completed models this is more beneficial than using one function to do both jobs if you're writing function and notice the function is doing too many different taskstry to split the code into two functions remember that you can always call function from another functionwhich can be helpful when splitting complex task into series of steps preventing function from modifying list sometimes you'll want to prevent function from modifying list for examplesay that you start with list of unprinted designs and write functions