In this chapter we'll explore what are functions, the most important part of functional programming. Just as in any other programming languages, functions play an essential part of a program. They contain a block of code under a single name, which can be called out indefinitely without having to re-write that code. In Python, functions are also objects which further opens the gate for more capabilities such as closures and decorators. But before moving onto them, let's start from the basics.