def, parameters, return
def introduces a new function. The parameter list inside the parentheses is the function's signature, the body is what it does, and return produces a value back to the caller.
Function definitions are statements, not declarations. They run at the point they appear and bind a function object to a name. That is why you can pass them around, reassign them, or define them inside other functions.
The distinction between parameters (the names in the signature) and arguments (the values passed in at the call site) is a useful one when you read other people's code. Same idea, two views: the signature is what the function expects, the call is what the caller actually sent.