итерация генератора в Питоне

Рейтинг: 0Ответов: 0Опубликовано: 19.08.2023

Я сейчас изучаю генераторы Питона и у меня возник вопрос. Не ругайтесь сильно если он глупый. Суть: Я решил создать генератор (в учебных целях), объект которого после прохождения цикла в цикле for, снова будет готов проходить цикл for без создания нового объекта. Как я понимаю, цикл for завершает свою работу после улавливания исключения StopIteration. Поэтому моя функция генератора имеет вид:

    def gen():
        n = 0
        while True:
            yield n+1
            n += 1
            if n > 2:
                n = 0
                raise StopIteration

g = gen()
for i in g:
    print(i)

Но в этом случае при первом же прохождении for не улавливает исключение SropItaration.

На выходе:

1
2
3
Traceback (most recent call last):
  File "C:\Users\User\PycharmProjects\pythonProject1\main.py", line 8, in gen
    raise StopIteration
StopIteration

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\User\PycharmProjects\pythonProject1\main.py", line 13, in <module>
    for i in g:
RuntimeError: generator raised StopIteration

Почему? Как пофиксить?

Ответы

Ответов пока нет.