Functions are reusable blocks of code — like mini-programs.
Why use them?
Define with def:
def greet(name):
print("Hello, " + name + "!")
Call it: greet("Alex") → Hello, Alex!
Functions can return results with return.
def add(a, b):
return a + b
result = add(5, 3)
print(result) # 8
Multiple returns possible, but usually one.