Why use functions?
Functions are among the most important concepts and constructs of any language, so let us give you a few reasons why we need them:
- They reduce code duplication in a program. By having a specific task be taken care of by a nice block of packaged code that we can import and call whenever we want, we don't need to duplicate its implementation.
 - They help in splitting a complex task or procedure into smaller blocks, each of which becomes a function.
 - They hide the implementation details from their users.
 - They improve traceability.
 - They improve readability.
 
Let us now look at a few examples to get a better understanding of each point.
Reducing code duplication
Imagine that you are writing a piece of scientific software, and you need to calculate prime numbers up to a certain limit—as we did in the previous chapter. You have a nice algorithm to calculate them, so you copy and paste it to wherever you need...