07. Generators Composition
Композиция — это естественное встраивание одного генератора в поток другого. При композиции значения из вложенного генератора выдаются «по мере готовности». Поэтому она будет работать даже если поток данных из вложенного генератора оказался бесконечным или ожидает какого-либо условия для завершения.
Для комбинирования используется специальная форма yield*
. Она применима только к другому генератору и делегирует ему выполнение. То есть, при yield*
интерпретатор переходит внутрь генератора-аргумента выполняет его, и все yield
, которые он делает, выходят из внешнего генератора. Получается — как будто мы вставили код внутреннего генератора во внешний напрямую:
Внутри себя, yield*
работает следующим образом:
Значением yield*
не обязательно должен быть генератор; это может быть любой итерируемый объект. Одно отличие в yield*
от обычного в том, что этот операторы учитывает return
-значение.
Last updated
Was this helpful?