Before you keep reading...
Runestone Academy can only continue if we get support from individuals like you. As a student you are well aware of the high cost of textbooks. Our mission is to provide great books to you for free, but we ask that you consider a $10 donation, more if you can or less if $10 is a burden.
Before you keep reading...
Making great stuff takes time and $$. If you appreciate the book you are reading now and want to keep quality materials free for other students please consider a donation to Runestone Academy. We ask that you consider a $10 donation, but if you can give more thats great, if $10 is too much for your budget we would be happy with whatever you can afford as a show of support.
2.4. Function Calls¶
The Python interpreter can compute new values with function calls. You are familiar with the idea of functions from high school algebra. There you might define a function
f by specifying how it transforms an input into an output,
f(x) = 3x + 2. Then, you might write
f(5) and expect to get the value 17.
Python adopts a similar syntax for invoking functions. If there is a named function
foo that takes a single input, we can invoke foo on the value 5 by writing
There are many built-in functions available in Python. You’ll be seeing some in this chapter and the next couple of chapters.
Functions are like factories that take in some material, do some operation, and then send out the resulting object.
In this case, we refer to the materials as arguments or inputs and the resulting object is referred to as output or return value. This process of taking input, doing something, and then sending back the output is demonstrated in the gif below.
Don’t confuse the “output value” of a function with the output window. The output of a function is a Python value and we can never really see the internal representation of a value. But we can draw pictures to help us imagine what values are, or we can print them to see an external representation in the output window.
To confuse things even more,
It is also possible for programmers to define new functions in their programs. You will learn how to do that later in the course. For now, you just need to learn how to invoke, or call, a function, and understand that the execution of the function returns a computed value.
We’ve defined two functions above. The code is hidden so as not to bother you (yet) with how functions are defined.
square takes a single input parameter, and returns that input multiplied by itself.
sub takes two input
parameters and returns the result of subtracting the second from the first. Obviously, these functions are not
particularly useful, since we have the operators
- available. But they illustrate how functions work.
The visual below illustrates how the
square function works.
Notice that when a function takes more than one input parameter, the inputs are separated by a comma. Also notice that the order of the inputs matters. The value before the comma is treated as the first input, the value after it as the second input.
Again, remember that when Python performs computations, the results are only shown in the output window if there’s a
print statement that says to do that. In the activecode window above,
square(5) produces the value 25 but we never
get to see that in the output window, because it is not printed.
2.4.1. Function calls as part of complex expressions¶
Anywhere in an expression that you can write a literal like a number, you can also write a function invocation that produces a number.
Let’s take a look at how that last execution unfolds.
2.4.2. Functions are objects; parentheses invoke functions¶
Remember that earlier we mentioned that some kinds of Python objects don’t have a nice printed representation? Functions are themselves just objects. If you tell Python to print the function object, rather than printing the results of invoking the function object, you’ll get one of those not-so-nice printed representations.
Just typing the name of the function refers to the function as an object. Typing the name of the function followed by
() invokes the function.