Page 36 - 6734
P. 36
while True:
x=(yield) # отримати дані через send()
yield 2*x # генерувати значення 2*x
corObj=coroutine() # створити об'єкт генератора
for x in [1,2,3]: # виведе: 2 4 6
corObj.next() # переміститись до першої
інструкції (yield)
print corObj.send(x), # передати дані
співпрограмі через вираз (yield), отримати значення
після другої інструкції yield
corObj.close() # завершити роботу з corObj
2 4 6
Ітератори
Ітератор – це об’єкт, який призначений для обходу елементів
певного контейнера [19]. Ітератори використовуються в інструкції
for. Ітератор реалізує метод next, який повертає наступний
елемент контейнера, або викликає виняткову ситуацію
StopIteration, якщо елементів більше немає.
it=iter([1,2,3]) # ітератор
for i in it: print i, # вивести 1 2 3
print
def f(l=[]): # функція
l.append(1) # додати в список 1
return l # повертає список
it=iter(f,[1,1,1]) # ітератор, який викликає f поки
нею не буде повернуто [1,1,1]
for i in it: print i,
1 2 3
[1] [1, 1]
35