Functions Victor Norman CS104 Calvin College Reading Quiz • Counts toward your grade. Function Def’n vs. Call • Definition: def funcname(param_names): statements to execute when funcname is called • Call: y = int(input(“Enter your age: “)) result = funcname(y) – How many function calls in this code? • Call must provide the same # of values as the function definition requires. Function Defn is an Abstraction • A function abstracts and names lines of code. – can be called repeatedly – can take arguments. Consider: y = sin(x). • Takes a value x, runs the sin function on it, producing a result that y is made to refer to. Non-fruitful Functions • Non-fruitful functions produce no value for the caller. – Just execute their statements – Not useful unless they do something like print something or make the robot move, etc. – Useful for turtle graphics. E.g., def drawSquare(size): code here to draw a square of size. nothing. Returns Fruitful Function • Computes a value and returns it to the caller. def squared(val): newval = val * val return newval • Return sends value back to the caller and exits the code in the function. • Function will exit the code anyway at the end of the function. Mistakes CS104ers Make • Provide literals as parameters in function definition: def xyz(p1, “hello”): # code here • Ignoring the parameter value. def xyz(p1): p1 = 3 # code here using p1 Clicker Questions Given this code: 1 def foo(x): 2 return x + 1 3 def bar(x, y): 4 t = foo(x) 5 return t + y 6 def baz(z): 7 t = bar(z, z) 8 return foo(t) 9 n = 3 10 res = baz(n) 11 print(res) Parameters and Local Variables • Parameters hold the *values* being passed in in the function call. • Both are defined only within the code of the function. – That is their scope or lifetime. • They can be altered within the code. • Can think of them as "temporary variables" -places to hold values while you work on computing the result or doing the work. Return Statement • Computes the result to be sent back to the caller. • Exits the code in the function, even if there is code after it. • E.g., def computeIt(x, y, z): w = x + y / z return w print("Done!") # never executed Return vs. print() • Printing a value in a function does not return it. – print sends characters out to the output “stream” – i.e., the screen. • To send a value back to the caller you must use return <val> Clicker Questions Given this code: 1 def beatHope(i): 2 3 4 i = i * i print("Let's beat Hope", i, "times") print(beatHope(3)) Assignment • Do ~21 questions from the Functions section in CodeLab for Saturday, 11:59:59 pm. • Study for test on Thursday.