Module(body=[FunctionDef(name='yrange', args=arguments(args=[Name(id='n', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[For(target=Name(id='i', ctx=Store()), iter=Call(func=Name(id='range', ctx=Load()), args=[Name(id='n', ctx=Load())], keywords=[], starargs=None, kwargs=None), body=[Expr(value=Yield(value=Name(id='i', ctx=Load())))], orelse=[])], decorator_list=[]), FunctionDef(name='creator', args=arguments(args=[], vararg=None, kwarg=None, defaults=[]), body=[Assign(targets=[Name(id='r', ctx=Store())], value=Call(func=Name(id='yrange', ctx=Load()), args=[Num(n=5)], keywords=[], starargs=None, kwargs=None)), Print(dest=None, values=[Str(s='creator'), Call(func=Attribute(value=Name(id='r', ctx=Load()), attr='next', ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None)], nl=True), Return(value=Name(id='r', ctx=Load()))], decorator_list=[]), FunctionDef(name='caller', args=arguments(args=[], vararg=None, kwarg=None, defaults=[]), body=[Assign(targets=[Name(id='r', ctx=Store())], value=Call(func=Name(id='creator', ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None)), For(target=Name(id='i', ctx=Store()), iter=Name(id='r', ctx=Load()), body=[Print(dest=None, values=[Str(s='caller'), Name(id='i', ctx=Load())], nl=True)], orelse=[])], decorator_list=[]), Expr(value=Call(func=Name(id='caller', ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None))])