#
6.7 The `return` statement

  return_stmt | ::= | "return" [expression_list]

  Download entire grammar as text.

`return` may only occur syntactically nested in a function definition, not within a nested class definition.

If an expression list is present, it is evaluated, else `None` is substituted.

`return` leaves the current function call with the expression list (or `None`) as return value.

When `return` passes control out of a `try` statement with a `finally` clause, that `finally` clause is executed before really leaving the function.

In a generator function, the `return` statement is not allowed to include an expression_list. In that context, a bare `return` indicates that the generator is done and will cause `StopIteration` to be raised.