Functions allow code to be reused, modularized, and organized. There are built-in, module, and user-defined functions. User-defined functions are defined using the def statement and consist of a function name followed by parentheses that can contain parameters. The function body is indented below the definition. When a function is called, its code is executed and returns to the caller. Functions allow breaking programs into smaller, reusable pieces of code.