Why use functions?
Functions are among the most important concepts and constructs of any language, so let me give you a few reasons why we need them:
- They reduce code duplication in a program. By having a specific task 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's look at a few examples to get a better understanding of each point.
Reduce code duplication
Imagine that you are writing a piece of scientific software, and you need to calculate primes up to a limit, as we did in the previous chapter. You write several algorithms and prime numbers, being the basis of many different types of calculations, keep creeping into your code. Well, you have a nice algorithm to calculate them...