In this chapter, we learned about the various types of functions in Python, as well as their differences, syntax, and use cases. We covered how and where to apply the different types of functions, and how they can be used to help break your programs into smaller sub-programs that achieve a specific purpose. We also saw how the use of functions can help use reuse functionality in our code and avoid repeating the same blocks of code.
With this knowledge, you should be able to build all sorts of well-structured programs that will be easy to read and understand, and which will make optimal use of repetitive functionality.
In the next chapter, we will take a look at lists and tuples; it will be our first chapter regarding the various data structures that Python offers.