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