[Python] цикл for и итераторы

Discussion in 'PHP' started by SpRyt, 8 Dec 2014.

  1. SpRyt

    SpRyt Member

    Joined:
    18 Oct 2010
    Messages:
    45
    Likes Received:
    5
    Reputations:
    5
    Доброго времени суток,

    В ходе написания одной программы возник вопрос:
    Python 3.4.1 Код: http://pastebin.com/Lq4zvLFN
    Почему прерывается цикл в 16 строке если вместо 13 строки я напишу просто return s ?
    Понятно что yield возвращает итератор, а return значение... Но, по-идее, когда цикл for получит мой set (ссылку на него) которая возвращается из функции то он должен сработать как в тривиальных случаях: for i in my_set: print(i).
    Спасибо за ответ.
     
  2. SpRyt

    SpRyt Member

    Joined:
    18 Oct 2010
    Messages:
    45
    Likes Received:
    5
    Reputations:
    5
    Решено!
    Когда в генераторе идет 'return' он выдает результат и StopIteration exception. Поэтому, нужно вместо return-а ставить 'yield from' чтобы вернуть то что нужно.
    Из документации:
     
    #2 SpRyt, 24 Dec 2014
    Last edited: 25 Dec 2014