This chapter introduces a collection of more advanced
function-related topics: recursive functions, function attributes and
and functional programming tools such as
filter. These are all somewhat advanced tools
that, depending on your job description, you may not encounter on a
regular basis. Because of their roles in some domains, though, a basic
understanding can be useful;
for instance, are regular customers in GUIs.
Part of the art of using functions lies in the interfaces between them, so we will also explore some general function design principles here. The next chapter continues this advanced theme with an exploration of generator functions and expressions and a revival of list comprehensions in the context of the functional tools we will study here.
Now that we’ve had a chance to study function basics in Python, let’s begin this chapter with a few words of context. When you start using functions in earnest, you’re faced with choices about how to glue components together—for instance, how to decompose a task into purposeful functions (known as cohesion), how your functions should communicate (called coupling), and so on. You also need to take into account concepts such as the size of your functions, because they directly impact code usability. Some of this falls into the category of structured analysis and design, but it applies to Python code as to any other.