Какие методы реализованы у генераторов
Python
Middle
Без компании
Какие методы реализованы у генераторов
Ответы
Генераторы в Python имеют несколько встроенных методов для управления их выполнением:
- **`send(value)`** – отправляет значение в генератор, которое становится результатом текущего `yield`.
```
def gen():
x = yield 1
yield x + 2
g = gen()
next(g) # 1
print(g.send(10)) # 12
```
- **`throw(exc)`** – вызывает исключение `exc` на текущем `yield`.
```
def gen():
try:
yield 1
except ValueError:
yield "Caught!"
g = gen()
next(g)
print(g.throw(ValueError)) # "Caught!"
```
- **`close()`** – вызывает `GeneratorExit` в генераторе, завершая его.
```
def gen():
try:
yield 1
except GeneratorExit:
print("Closed")
g = gen()
next(g)
g.close() # Выведет "Closed"
```
- **`__next__()`** (или `next()`) – запускает выполнение до следующего `yield`.
Генераторы также поддерживают итерацию через `for` или `next()`.