On Fri, May 20, 2016 at 6:11 AM, Ian Kelly <ian.g.ke...@gmail.com> wrote: > On Thu, May 19, 2016 at 2:01 PM, Chris Angelico <ros...@gmail.com> wrote: >> On Fri, May 20, 2016 at 3:46 AM, Steven D'Aprano <st...@pearwood.info> wrote: >>> The idea of finally is >>> that it executes no matter what happens[1]. >>> >>> [1] Well, *almost* no matter what. If you pull the power from the computer, >>> the finally block never gets a chance to run. >> >> Nor if you kill -9 the process, or get into an infinite loop, or any >> number of other things. Specifically, what the finally block >> guarantees is that it will be executed *before any code following the >> try block*. In this example: >> >> try: >> code1 >> except Exception: >> code2 >> else: >> code3 >> finally: >> code4 >> code5 >> >> Once you hit code1, you are absolutely guaranteed that code5 *will >> not* be run prior to code4. > > The guarantee is stronger than that. It's possible to exit the try > block without passing execution to code5 at all. The finally block is > still guaranteed to be executed in this case.
Yes, but I don't know how to depict "other code outside of the try block" in a way that doesn't fall foul of other nitpicks like "well, you could call that function from within the try block" :) ChrisA -- https://mail.python.org/mailman/listinfo/python-list