Читайте также:

? Генератор yield в Python / IT Resume Вашей реакции на пост о...

? Генератор yield в Python / IT Resume

Вашей реакции на пост о yield можно только позавидовать. За нами теперь должок, удовлетворить ваш интерес и рассказать об этом загадочном генераторе. Мы посмотрим как это работает и где применимо.

Из примера в прошлом посте видно, что yield можно использовать в функции вместо return. И тогда получается генератор, который вычисляет не всё сразу, а генерирует элемент на ходу.

Итак, как же он работает? ?

Допустим, мы хотим получить квадраты чисел от 1 до 10. Мы могли бы создать список и с помощью append добавлять в него элементы, но мы заменим эту привычную конструкцию на yield (код на карточках)

? Что произошло?

Мы задали функцию-генератор squares(), а затем с помощью цикла for вывели элементы, вычисленные функцией.

У генераторов еще есть метод next(). Например, мы бы вызывали next(squares()), чтобы получить следующее значение. Но нам бы пришлось написать это 10 раз, так что лучше воспользуемся циклом.

Итак, при каждой итерации, Python запускал код до тех пор, пока не сталкивался с оператором yield. Затем он выдавал вычисленное значение, а функция, как бы “замораживалась” в этом состоянии, готовясь возобновить выполнение с этого же места.

Когда функция вызывается в следующий раз, выполнение продолжается с этого “замороженного” момента. И так продолжается до тех пор, пока генератор не будет исчерпан. Если после того, как генератор выдал все значения, вызвать его снова - получим ошибку StopIteration. Мы можем переопределить генератор, и тогда все начнётся заново.

? Где пригодится yield?

→ При генерации больших последовательностей - с помощью yield мы сохраним внушительный объем памяти.
→ При чтении больших файлов. Yield позволит пройтись по одной строке за раз, а не считывать весь файла целиком в память.
→ При создании пайплайнов обработки. Вы можете постепенно проходить все этапы для каждого элемента, а не обрабатывать все элементы сразу.

Примеры на карточках ?

? Таким образом, yield - мощный инструмент, который позволяет создавать генераторы, и получать значения на ходу. Порой, это делает его незаменимым при работе с объемными данными и файлами. Потренируйтесь использовать yield и убедитесь, как он может упростить ваш код и сохранить память!

#python@pylounge

? Генератор yield в Python / IT Resume Вашей реакции на пост о...
? Генератор yield в Python / IT Resume Вашей реакции на пост о...
? Генератор yield в Python / IT Resume Вашей реакции на пост о...
? Генератор yield в Python / IT Resume Вашей реакции на пост о...
? Генератор yield в Python / IT Resume Вашей реакции на пост о...
? Генератор yield в Python / IT Resume Вашей реакции на пост о...
? Генератор yield в Python / IT Resume Вашей реакции на пост о...
Еще посты

Свежие комментарии

ssfmzr 4 дней назад к записи
ну и что это за хуйня, как читать нахуй
Петенька 1 месяцев к записи
Я не пойму зачем вообще платить. Это как платить, за поедание шашлыка или колбасы :) Люди живут спокойно спят на таких кроватях, зачем за это платить. Ну ладно жиром бесятся французы ваши. У меня такая водяная кровать Ruby дома стоит, и мне не надо платить, чтобы я получал пользу и удовольствие от использования. На счет невесомости, да согласен, эффект небольшой конечно есть, ну это не как полет по стратосфере конечно далеко нет такой эффект. Вот тут я покупал свою водяную кровать https://ruby-bed.ru
рин 2 месяцев назад к записи
любовь как в дораме
Евгений 2 месяцев назад к записи
Я ВАС ВСЕХ НА ХУЮ ВЕРТЕЛ, Я ПРОСТО ХОЧУ БЫТЬ СЧАСТЛИВЫМ И ПРОЧИТАТЬ ЭТУ МАНГУ
Евгений 2 месяцев назад к записи
Я В ТАКОМ НЕГОДОВАНИИ , Я ИЩУ САЙТ ГДЕ МОЖНО ПРОСИТАТЬ ЭТУ ПОЕБОТУ УЖЕ ЧАС , И ТУТ БОЯДЬ О ДА СВЕРШИЛОСЬ Я НЕШЕЛ САЙТ, Я ЕБАЛСЯ С ТЕМ ЧТОБЫ ЗАРЕГАТЬСЯ ПОЛ ЧАСА ИБО МОЙ ТЕЛЕФОН УЖЕ ЕБАНУЛСЯ В КРАЙ , С НОРЕМ ПОПОЛАМ Я ЗАРЕГАЛСЯ. А ТУТ ЕБИСЬ ОНО КОНЕМ ЧИТАТЬ НЕЛЬЗЯ