# Chapter 6. Fruitful Functions

Many of the Python functions we have used, such as the math functions, produce return values. But the functions we’ve written are all void: they have an effect, like printing a value or moving a turtle, but they don’t have a return value. In this chapter you will learn to write fruitful functions.

# Return Values

Calling the function generates a return 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)

The functions we have written so far are void. Speaking casually, they have no return value; more precisely, their return value is `None`

.

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): a = math.pi * radius**2 return a

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 `a`

can 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

Since these `return`

statements are in an alternative ...

Get *Think Python, 2nd Edition* now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.