6.10. Composition

As we have already seen, you can call one function from within another. This ability to build functions by using other functions is called composition.

As an example, we’ll write a function that takes two points, the center of the circle and a point on the perimeter, and computes the area of the circle.

Assume that the center point is stored in the variables xc and yc, and the perimeter point is in xp and yp. The first step is to find the radius of the circle, which is the distance between the two points. Fortunately, we’ve just written a function, distance, that does just that, so now all we have to do is use it:

radius = distance(xc, yc, xp, yp)

The second step is to find the area of a circle with that radius and return it. Again we will use one of our earlier functions:

result = area(radius)
return result

Wrapping that up in a function, we get:

We called this function area2 to distinguish it from the area function defined earlier. There can only be one function with a given name within a module.

Note that we could have written the composition without storing the intermediate results.

def area2(xc, yc, xp, yp):
    return area(distance(xc, yc, xp, yp))
Next Section - 6.11. A Turtle Bar Chart