Работали ли вы с настолько огромным объемом данных, что он переполнял память компьютера? Я часто с этим сталкивался, пока не услышал о генераторах. Иногда на собеседованиях или иных тестах на оценку знаний предлагают такую задачу: Перед вами два выражения. Определите, что выведет каждое из них и в чем их разница. a = [i * i in range(5)] b = (i * i in range(5)) Если вы сомневаетесь в своих знаниях, то эта статья для вас. Использование Генераторов Функции генераторов (их описание можно почитать в PEP 255) представляют собой особый вид функций, которые возвращают «ленивый итератор»...
Рассмотрим, что такое функция-генератор, в чем ее особенности и плюсы. Любая функция, содержащая ключевое слово yield является функцией-генератором (независимо от наличия return) и при вызове возвращает объект-генератор. Важные моменты: 1) ленивый, не выполняется пока не попросить значение 2) одноразовый -при исчерпании кидает StopIteration (в for этого не видно, ибо обрабатывается...