Выбор ответа Middle Итераторы и генераторы обновлено
Что делает yield from
Вопрос
Что делает yield from sub внутри генератора?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Выдаёт элементы sub по одному, прокидывает send/throw. yield from делегирует итерацию подгенератору: элементы проходят насквозь по одному, send() и throw() передаются внутрь, а результатом выражения становится значение return подгенератора.
Варианты ответа
- Выдаёт элементы
subпо одному, прокидываетsend/throwправильный ответ - Возвращает
subцеликом как один элемент генератора - Запускает
subв отдельном потоке и ждёт результат - Копирует элементы
subв список и выдаёт его разом
Разбор
yield from делегирует итерацию подгенератору: элементы проходят насквозь по одному, send() и throw() передаются внутрь, а результатом выражения становится значение return подгенератора. Чтобы выдать sub одним элементом, пишут yield sub. Потоков и копирования в список нет, ленивость сохраняется.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Итераторы и генераторы»
- Когда выполняется тело генератора
- Разбить последовательность на пачки
- Рекурсивно развернуть вложенные списки
- Конвейер обработки лога на генераторах
- Свой итерируемый класс, который можно обходить много раз
- Когда выполняется finally в недочитанном генераторе
- Полезные функции itertools
- Ленивые вычисления