kuroko/test/testYieldFrom.krk

62 lines
1.2 KiB
Python

def gen(x=0):
x = yield from [1,2,3]
print("checkpoint 1", x)
x = yield 4
print("checkpoint 2", x)
yield from [5,6,7]
def main():
for i in gen():
print(i)
main()
def foo(x=-1):
print("Entering")
x = yield 42
print("Got",x)
x = yield 1024
print("got",x)
return 1234
def main(f=None):
f = foo()
print('yield 1 got',f.send(None))
print('yield 2 got',f.send('hello'))
try:
f.send('bye') # End of iterator
except:
pass # On Python, this throws stop-iteration with 1234
main()
def accumulate(tally=0,next=None):
print("Entering accumulate")
while True:
print("Yielding None")
next = yield
print("Got",next)
if next is None:
print("Returning tally",tally)
return tally
tally += next
def gather_tallies(tallies,tally=None):
while True:
tally = yield from accumulate()
print("Appending",tally)
tallies.append(tally)
def main(tallies=None,acc=None):
tallies = []
acc = gather_tallies(tallies)
print(next(acc))
for i in range(4):
print(acc.send(i))
acc.send(None)
for i in range(5):
acc.send(i)
acc.send(None)
print(tallies)
main()