import sys def tracer(frame, event, arg): if event == 'line': if frame.f_locals['cmd'] == 'delete': del frame.f_trace elif frame.f_locals['cmd'] == 'set': frame.f_trace = None print('f_trace:', frame.f_trace) return None return tracer def foo(cmd): print(cmd, 'start') print(cmd, 'done') sys.settrace(tracer) foo('delete') foo('set')