Встречается на собеседованиях • сегодня
Как получить значение в 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: "
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы