function basics in part iiiwe studied basic procedural statements in python herewe'll move on to explore set of additional statements and expressions that we can use to create functions of our own in simple termsa function is device that groups set of statements so they can be run more than once in program-- packaged procedure invoked by name functions also can compute result value and let us specify parameters that serve as function inputs and may differ each time the code is run coding an operation as function makes it generally useful toolwhich we can use in variety of contexts more fundamentallyfunctions are the alternative to programming by cutting and pasting--rather than having multiple redundant copies of an operation' codewe can factor it into single function in so doingwe reduce our future work radicallyif the operation must be changed laterwe have only one copy to update in the functionnot many scattered throughout the program functions are also the most basic program structure python provides for maximizing code reuseand lead us to the larger notions of program design as we'll seefunctions let us split complex systems into manageable parts by implementing each part as functionwe make it both reusable and easier to code table - previews the primary function-related tools we'll study in this part of the book-- set that includes call expressionstwo ways to make functions (def and lambda)two ways to manage scope visibility (global and nonlocal)and two ways to send results back to callers (return and yieldtable - function-related statements and expressions statement or expression examples call expressions myfunc('spam''eggs'meat=ham*restdef def printer(messge)print('hello messagereturn def adder(ab= * )return [