]> granicus.if.org Git - python/commitdiff
Issue #21366: Document the fact that ``return`` in a ``finally`` clause
authorZachary Ware <zachary.ware@gmail.com>
Tue, 6 May 2014 14:07:13 +0000 (09:07 -0500)
committerZachary Ware <zachary.ware@gmail.com>
Tue, 6 May 2014 14:07:13 +0000 (09:07 -0500)
overrides a ``return`` in the ``try`` suite.

Doc/reference/compound_stmts.rst

index 4e037113fb7a4b8842706988fbfdbb92c961f0cc..869eef492444d2e0fd3a8c7236331627fd21ec5e 100644 (file)
@@ -337,6 +337,20 @@ statement, the :keyword:`finally` clause is also executed 'on the way out.' A
 reason is a problem with the current implementation --- this restriction may be
 lifted in the future).
 
+The return value of a function is determined by the last :keyword:`return`
+statement executed.  Since the :keyword:`finally` clause always executes, a
+:keyword:`return` statement executed in the :keyword:`finally` clause will
+always be the last one executed::
+
+   >>> def foo():
+   ...     try:
+   ...         return 'try'
+   ...     finally:
+   ...         return 'finally'
+   ...
+   >>> foo()
+   'finally'
+
 Additional information on exceptions can be found in section :ref:`exceptions`,
 and information on using the :keyword:`raise` statement to generate exceptions
 may be found in section :ref:`raise`.