× Главная Лучшее Свежее Вход Регистрация
ДуровЛох стал главным конкурентом ВКонтакте (Дуров в шоке) https://durovloh.me.
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 Вашей реакции на пост о...
Читайте также:
Еще посты

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

Ozod Azik 1 месяцев к записи
Я только одного вижу, а где другие?
Наталия 1 месяцев к записи
Ищем, все переживаем, как с вами связаться??
Валерия 1 месяцев к записи
Ну как по мне ей и так и так идёт, правда больше мне с андеркатом нравится😉
Вера 1 месяцев к записи
У меня есть олень
Анжелика 2 месяцев назад к записи
При чем тут хейт ,очень хорошие внимательные врачи. Я как раз закрывала больничный, парень с бородой был на приёме ( уж простите не поняла кто тут кто😭). Очень вежливый, внимательный, по русски говорит. Понравился . А передо мой вышла бабулька с глазами по пятаку , подсела к нам и начала названивать, вот мол ,не наш доктор ,а какой толковый ,все послушал и рассказал. Думаю ,эти парни станут всеоющими любимцами ,если останутся внимательным, гуманными и человечными. А то русские врачи больно быстро начинают мнить из себя пуп земли. Удачи, ребята !