Встречается на собеседованиях • сегодня

Как получить значение в Python генераторе, посылаемое через метод send()

Генераторы в Python могут не только выдавать значения через yield, но и получать их через метод send(). Для этого нужно использовать yield как выражение, присваивая его результат переменной.

Пример:

python
def my_generator():
    while True:
        received = yield  # Получаем значение через send()
        print(f"Received: {received}")

gen = my_generator()
next(gen) # Инициализация генератора (до первого yield)
gen.send("Hello") # Отправляем значение в генератор

text

**Нюансы:**  
1. Перед `send()` обязательно вызовите `next()` или `send(None)`, чтобы генератор дошёл до первого `yield`.  
2. Если генератор завершился, `send()` вызовет `StopIteration`.  
3. `send()` также возвращает следующее значение генератора (если есть `yield` с возвратом).  

Пример с возвратом значения:
```python
def echo():
    while True:
        val = yield "Echo: "
        print(val)

g = echo()
next(g)
print(g.send("Hi"))  # Выведет "Hi" и вернёт "Echo: "
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы