Todas las funciones devuelven un valor cuando se ejecutan.

Si a una sentencia de devolución le sigue una lista de expresiones, la lista de expresiones se evalúa y se devuelve el valor:

>>> def mayor_que_1(n):
...     return n > 1
...
>>> print(mayor_que_1(1))
False
>>> print(mayor_que_1(2))
True

Si no hay lista de expresiones especificada, se devuelve  None :

>>> def no_lista_expresion():
...     return    # No se devuelve una lista de expresiones.
...
>>> print(no_lista_expresion())
None

Si se alcanza una sentencia de devolución durante la ejecución de una función, la llamada a la función actual se deja en ese punto:

>>> def devuelve_media():
...     a = 1
...     return a
...     a = 2     # Esta sentencia nunca es alcanzada.
...
>>> print(devuelve_media())
1

Si no hay sentencia de devolución, la función devuelve None cuando alcanza el final

>>> def no_devolver():
...     pass     # No hay sentencia retornar.
...
>>> print(no_devolver())
None

Una única función puede tener muchas sentencias devolver. La ejecución de la función finaliza cuando una de las sentencias de devolución se alcanza:

 >>> def multiples_devoluciones(n):
 ...    if(n):
 ...        return "First Return Statement"
 ...    else:
 ...        return "Second Return Statement"
 ...
 >>> print(multiples_devoluciones(True))
 First Return Statement
 >>> print(multiples_devoluciones(False))
 Second Return Statement
 

Una única función puede devolver varios tipos:

 >>> def varios_tipos_de_devolucion(n):
 ...     if(n==1):
 ...         return "Hello World."   # Devuelve un string
 ...     elif(n==2):
 ...         return 42               # Devuelve un valor
 ...     else:
 ...         return True             # Devuelve un boolean
 ... 
 >>> print(varios_tipos_de_devolucion(1))
 Hello World.
 >>> print(varios_tipos_de_devolucion(2))
 42
 >>> print(varios_tipos_de_devolucion(3))
 True

Incluso es posible que una única función devuelva múltiples valores con un simple Retornar:

>>> def devolver_dos_valores():
 ...     a = 40
 ...     b = 2
 ...     return a,b
 ...
 >>> print("First value = %d,  Second value = %d" %(devolver_dos_valores()))
 First value = 40,  Second value = 2

Consulta la documentación de Python para más información

Traducido del artículo - Python Return Statements Explained: What They Are and Why You Use Them