you'll often find it useful to pass list to functionwhether it' list of namesnumbersor more complex objectssuch as dictionaries when you pass list to functionthe function gets direct access to the contents of the list let' use functions to make working with lists more efficient say we have list of users and want to print greeting to each the following example sends list of names to function called greet_users()which greets each person in the list individuallygreet_users py def greet_users(names)"""print simple greeting to each user in the list ""for name in namesmsg "helloname title("!print(msgu usernames ['hannah''ty''margot'greet_users(usernameswe define greet_users(so it expects list of nameswhich it stores in the parameter names the function loops through the list it receives and prints greeting to each user at we define list of users and then pass the list usernames to greet_users()in our function callhellohannahhellotyhellomargotthis is the output we wanted every user sees personalized greetingand you can call the function any time you want to greet specific set of users modifying list in function when you pass list to functionthe function can modify the list any changes made to the list inside the function' body are permanentallowing you to work efficiently even when you're dealing with large amounts of data consider company that creates printed models of designs that users submit designs that need to be printed are stored in listand after being printed they're moved to separate list the following code does this without using functionsprinting_ models py start with some designs that need to be printed unprinted_designs ['iphone case''robot pendant''dodecahedron'completed_models [simulate printing each designuntil none are left move each design to completed_models after printing while unprinted_designscurrent_design unprinted_designs pop(functions