A function is a block of reusable code that performs a specific task. Functions provide modularity and code reusability. To define a function in Python, you use the def keyword followed by the function name and parentheses. Any parameters go inside the parentheses. The function body is indented and starts with a colon. A return statement exits the function and optionally returns a value. Functions can take arguments which are values passed when calling the function. Arguments can have default values. Functions return None by default if there is no return statement.