Что такое yield в Python
Python
Middle
Аэрофлот
Что такое yield в Python
Ответы
`yield` — это ключевое слово в Python, используемое для создания генераторов. Оно позволяет функции возвращать значения по одному, приостанавливая выполнение между вызовами, вместо возврата всех значений сразу (как в обычных функциях с `return`).
**Как это работает:**
- При вызове функции с `yield` она возвращает генератор, а не выполняет код сразу.
- При каждом вызове `next()` генератор выполняет код до следующего `yield`, возвращает значение и приостанавливается.
- При следующем вызове `next()` выполнение продолжается с места остановки.
**Пример:**
```
def count_up_to(n):
i = 1
while i <= n:
yield i
i += 1
counter = count_up_to(3)
print(next(counter)) # 1
print(next(counter)) # 2
print(next(counter)) # 3
```
**Преимущества:**
- Экономия памяти (значения генерируются "на лету")
- Ленивые вычисления (генерация только по запросу)
- Возможность работы с бесконечными последовательностями
Генераторы часто используются в циклах `for`, где `next()` вызывается автоматически.