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

? Генератор 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 Вашей реакции на пост о...
Еще посты

Популярные теги:

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

Александр 5 дней назад к записи
Немного по другому копыта расположены, но очень органично, состоит из двух частей,
Александр 5 дней назад к записи
Есть такая лошадка, материал алюминиевый,
Хый 5 дней назад к записи
Фу кликбейт ебучий
Janka 1 недель к записи
Журнал с пластинками "КРУГОЗОР"
LuckyBook 1 недель к записи
Здравствуйте, ещё продаете?