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
   31   32   33   34   35   36   37   38   39   40   41