Python Russian

Python Russian 

простым языком о прекрасном языке программирования

50subscribers

76posts

Простая функция-генератор. Для чего нужен yield

Рассмотрим, что такое функция-генератор, в чем ее особенности и плюсы.
Любая функция, содержащая ключевое слово yield является функцией-генератором (независимо от наличия return) и при вызове возвращает объект-генератор.
Важные моменты:
1) ленивый, не выполняется пока не попросить значение
2) одноразовый -при исчерпании кидает StopIteration (в for этого не видно, ибо обрабатывается внутри)
3) после выполнения yield встает на паузу, при этом сохраняет все внутреннее состояние (аргументы, локальные переменные)
4) при повторном запросе (next) продолжает работу с места остановки
Удобен при работе с большими данными, но и в целом может применяться там, где нам нужно получать наборы данных, обрабатывать их.
Ссылки:
https://docs.python.org/3/glossary.html#term-generator
https://docs.python.org/3/reference/simple_stmts.html#yield
https://docs.python.org/3/reference/expressions.html#generator-expressions
https://docs.python.org/3/tutorial/classes.html?highlight=generator#generators
https://docs.python.org/3/reference/expressions.html#yieldexpr
Subscription levels3

Большое спасибо

$2.83 per month
На поддержку канала и просто в знак благодарности

На новые идеи

$7.1 per month
Чтобы новые видео появлялись и для поддержки вдохновения

Show must go on...

$14.2 per month
На хорошее кофе и для металлу в голосе
Go up