def myYield_1():
a, i ='yield',0
whileTrue:
print('before #%d'% i,end=", ")
yield a, i
print('after #%d'% i,end=", ")
i +=1
def myYield_2():
a, i ='yield_a',0
b, i ='yield_b',0
whileTrue:
print('before #%d'% i,end=", ")
yield a, i
yield b, i
print('after #%d'% i,end=", ")
i +=1
it1 = iter(myYield_1())
it2 = iter(myYield_2())
for i in range(10):
print("next #%d"% i,end=": ")
print(next(it1))
print('\n')
for i in range(10):
print("next #%d"% i,end=": ")
print(next(it2))
输出是这样的:
next#0: before #0, ('yield', 0)
next#1: after #0, before #1, ('yield', 1)
next#2: after #1, before #2, ('yield', 2)
next#3: after #2, before #3, ('yield', 3)
next#4: after #3, before #4, ('yield', 4)
next#5: after #4, before #5, ('yield', 5)
next#6: after #5, before #6, ('yield', 6)
next#7: after #6, before #7, ('yield', 7)
next#8: after #7, before #8, ('yield', 8)
next#9: after #8, before #9, ('yield', 9)
next#0: before #0, ('yield_a', 0)
next#1: ('yield_b', 0)
next#2: after #0, before #1, ('yield_a', 1)
next#3: ('yield_b', 1)
next#4: after #1, before #2, ('yield_a', 2)
next#5: ('yield_b', 2)
next#6: after #2, before #3, ('yield_a', 3)
next#7: ('yield_b', 3)
next#8: after #3, before #4, ('yield_a', 4)
next#9: ('yield_b', 4)