Functions are defined using the def keyword followed by the function name, an argument list in parentheses, and a colon to start a new block. Let's quickly define a few functions at the REPL to get the idea:
>>> def square(x):
... return x * x
...
We use the return keyword to return a value from the function.
As we've seen previously, we call functions by providing the actual arguments in parentheses after the function name:
>>> square(5)
5
Functions aren't required to explicitly return a value though — perhaps they produce side effects:
>>> def launch_missiles():
... print("Missiles launched!")
...
>>> launch_missiles()
Missiles launched!
You can return early from a function by using the return keyword with no parameter:
>>> def even_or_odd(n):
... if n % 2 == 0:
... print...