Some of the built-in functions we have used, such as the math functions, produce results. Calling the function generates a value, which we usually assign to a variable or use as part of an expression.
e = math.exp(1.0) height = radius * math.sin(radians)
All of the functions we have written so far are void; they print something or move turtles around, but their return value is
In this chapter, we are (finally) going to write fruitful functions. The first example is
area, which returns the area of a circle with the given radius:
def area(radius): temp = math.pi * radius**2 return temp
We have seen the
return statement before, but in a fruitful function the
return statement includes an expression. This statement means: “Return immediately from this function and use the following expression as a return value.” The expression can be arbitrarily complicated, so we could have written this function more concisely:
def area(radius): return math.pi * radius**2
On the other hand, temporary variables like
temp often make debugging easier.
Sometimes it is useful to have multiple return statements, one in each branch of a conditional:
def absolute_value(x): if x < 0: return -x else: return x
return statements are in an alternative conditional, only one will be executed.
As soon as a return statement executes, the function terminates without executing any subsequent statements. Code that appears after a
return statement, or any other place the flow of execution can never reach, is called dead code.
In a fruitful function, it is a good idea to ensure that every possible path through the program hits a
return statement. For example:
def absolute_value(x): if x < 0: return -x if x > 0: return x
This function is incorrect because if
x happens to be 0, neither condition is true, and the function ends without hitting a
return statement. If the flow of execution gets to the end of a function, the return value is
None, which is not the absolute value of 0.
>>> print absolute_value(0) None
By the way, Python provides a built-in function called
abs that computes absolute values.
compare function that returns
x > y,
x == y, and
x < y.