# Functions Exercises

This series of exercises introduces Python functions step-by-step. The goal is to help you practice writing, calling, and reasoning about functions — including parameters, return types, and signatures.

---

## Covered Topics

| Exercise        | Concept                                             |
|----------------|-----------------------------------------------------|
| `functions1.py` | Defining and calling basic functions                |
| `functions2.py` | Parameters, return values, and default arguments   |
| `functions3.py` | Type hints and return annotations                  |
| `functions4.py` | Default parameters with optional behavior          |
| `functions5.py` | Returning multiple values using tuples             |

---

## How to Use

Each file contains:
- `TODO` sections where you must implement function logic
- `assert`-based tests to verify correctness

You should see either test output or `[FAIL]` messages guiding you to fix issues.

---

## Tip: Type Checking
Many exercises use Python's `inspect` module to validate:
- Parameter names and order
- Type hints (annotations)
- Return type declarations

---

## Coming Soon
Future exercises may include:
- Variable argument functions (`*args`, `**kwargs`)
- Lambda expressions
- Higher-order functions

---