On 6 June 2014 18:39, Roy Smith <r...@panix.com> wrote: > > The only way I can think of to bypass a finally block would be to call > os._exit(), or send yourself a kill signal.
If you're willing to use implementation details... --- # BreakN.py import sys # Turn tracing on if it is off if sys.gettrace() is None: sys.settrace(lambda frame, event, arg: None) def break_n(n): frame = sys._getframe().f_back for _ in range(n): frame.f_trace = skip_function_tracer frame = frame.f_back def skip_function_tracer(frame, event, arg): try: # Skip this line while True: frame.f_lineno += 1 except ValueError as e: # Finished tracing function; remove trace pass --- # Thing_you_run.py from BreakN import break_n def foo(): try: print("I am not skipped") break_n(1) print("I am skipped") ... finally: print("I am skipped") ... foo() #>>> I am not skipped -- https://mail.python.org/mailman/listinfo/python-list