Page 35 - 6734
P. 35
метода next продовжує виконання функції з наступної за yield
інструкції.
def generator(n): # функція генератора (генерує
послідовність)
while n<3:
yield n # генерувати значення n
n+=1
genObj=generator(0) # створити об'єкт генератора,
який має можливість ітерації (є ітератором)
print genObj.next(), genObj.next(), genObj.next() # 0
1 2
#print genObj.next() # помилка: StopIteration
for x in generator(0): # або так
print x, # виведе: 0 1 2
print
def generator2(n): # функція генератора з кількома
інструкціями yield
while n<3:
yield n # генерувати значення n
yield n # генерувати значення n
n+=1
for x in generator2(0):
print x, # виведе: 0 0 1 1 2 2
0 1 2
0 1 2
0 0 1 1 2 2
Співпрограми
Співпрогама – це функція генератора, яка містить вираз
(yield) [19, 38]. Метод send об’єкта співпрограми передає їй дані,
які повертаються виразом (yield).
def coroutine(): # співпрограма обробляє
послідовність вхідних даних
34