Sobes.tech
Назад к вопросам
Middle+
5

Какие методы есть у объекта-генератора? Что делает метод send()?

Компании, где спрашивали
YadroYadro

Ответ от нейросети

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('Привет'))  # Передает 'Привет' внутрь, выводит 'Получено: Привет' и 'Второе значение'