Генераторы
Функции-генераторы выглядят как и обычные, но вместо
Вызов подобной функции вернёт не значение, а объект генератора. Далее из этого объекта можно получать значения, например, с помощью функции
Если генератору больше нечего возвращать, то будет вызвано исключение
#генераторы
Функции-генераторы выглядят как и обычные, но вместо
return
содержат выражения с ключевым словом yield
для последовательного генерирования значений.Вызов подобной функции вернёт не значение, а объект генератора. Далее из этого объекта можно получать значения, например, с помощью функции
next
или циклом for
.Если генератору больше нечего возвращать, то будет вызвано исключение
StopIteration
. В целом, генератор — это особый, более изящный случай итератора.#генераторы
Корутины
Некой противоположностью генераторов являются корутины. Для примера напишем функцию, которая будет в бесконечном цикле подставлять значение и выводить строку.
Обратите внимание на то, как было использовано ключевое слово
Функция работает так: при отправке значения через метод
#генераторы #корутины
Некой противоположностью генераторов являются корутины. Для примера напишем функцию, которая будет в бесконечном цикле подставлять значение и выводить строку.
Обратите внимание на то, как было использовано ключевое слово
yield
. При таком написании создаётся не генератор, а корутина, что позволяет не просто генерировать значения, но и принимать их.Функция работает так: при отправке значения через метод
send
локальная переменная name
принимает его, а далее значение подставляется в строку и выводится на экран.#генераторы #корутины
👍2