В чём отличие итераторов и генераторов? Какая связь между ними? Что происходит когда итератор доходит до конца?
Answer from AI
sobes.tech AI
Итератор — это объект, который позволяет последовательно обходить элементы коллекции, обычно реализуя методы для получения следующего элемента и проверки окончания обхода. Генератор — это специальный вид итератора, который создаётся с помощью функции, способной приостанавливать своё выполнение и возвращать значения по одному (например, с помощью ключевого слова yield в Python).
Связь между ними в том, что генератор является удобным способом создания итераторов без необходимости вручную реализовывать весь интерфейс итератора.
Когда итератор доходит до конца, обычно он сигнализирует об этом специальным образом: в Python — возбуждается исключение StopIteration, в других языках — возвращается значение, указывающее на окончание (например, null или false). Это позволяет циклам и другим конструкциям понимать, что элементы закончились.