Назад к вопросам
Yadro
Middle+
5
Какие методы есть у объекта-генератора? Что делает метод send()?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Объект-генератор в Python имеет несколько ключевых методов:
__iter__()— возвращает сам генератор, что позволяет использовать его в циклах.__next__()— возвращает следующий элемент последовательности, либо возбуждает исключениеStopIteration, если элементов больше нет.send(value)— возобновляет выполнение генератора и передает значениеvalueв точку, где генератор был приостановлен наyield. Это позволяет не только получать значения из генератора, но и передавать данные внутрь.throw(type, value=None, traceback=None)— позволяет сгенерировать исключение внутри генератора в месте приостановки.close()— завершает генератор, вызывая внутриGeneratorExit.
Метод send() используется для передачи данных внутрь генератора. При первом вызове генератора обычно используется next() или send(None), чтобы запустить выполнение до первого yield. После этого send(value) передает значение, которое становится результатом выражения yield внутри генератора.
Пример:
def generator():
received = yield 'Первое значение'
print(f'Получено: {received}')
yield 'Второе значение'
gen = generator()
print(next(gen)) # Запускает генератор, выводит 'Первое значение'
print(gen.send('Привет')) # Передает 'Привет' внутрь, выводит 'Получено: Привет' и 'Второе значение'