Skip to content

Instantly share code, notes, and snippets.

@Rosuav
Last active August 29, 2015 14:15
Show Gist options
  • Save Rosuav/323d51eb45c28eb92e80 to your computer and use it in GitHub Desktop.
Save Rosuav/323d51eb45c28eb92e80 to your computer and use it in GitHub Desktop.
Generator magic
def pattern(gen):
def middle(*args):
def inner():
for i in gen(*args):
if hasattr(i, "_scheduler_recurse_into_me"):
yield from i()
else:
yield i
inner._scheduler_recurse_into_me = True
return inner
return middle
@pattern
def lst(l):
yield from l
print(lst)
p = lst([1,2,3,lst([4,5])])
print(p)
print(list(p()))
print(list(p()))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment