import sys def tracer(frame, event, arg): if event == 'call': print(event, frame.f_code.co_name, 'with count', frame.f_locals['count']) if frame.f_locals['count'] > 0: print('returning None: the scope shouldn’t be traced') return None else: print(event) return tracer def gen(count): count += 1 yield count yield count it = gen(int(sys.argv[1])) sys.settrace(tracer) next(it) next(it) sys.settrace(None)