В отличие от итераторов, у генераторов есть собственные методы, позволяющие контролировать их работу. Их три:
close, throw, send.close() — останавливает генератор на следующем проходе.throw() — выводит ошибку на экран и останавливает выполнение генератора сразу же. С помощью них можно контролировать бесконечные генераторы.send() — самый интересный метод. Позволяет передавать значения генератору. Первым всегда должно быть None, что бы запустить его. С помощью send, к слову, создают корутины — функции, которым можно передавать значения, останавливать и возобновлять работу программы.
#теория
