Проверяет понимание работы итерационного протокола в Python, включая метод __next__() и условие остановки итерации.
Метод __next__() является частью итерационного протокола в Python. Он определяет, как объект-итератор возвращает элементы по одному за раз. Когда все элементы исчерпаны, метод должен выбросить исключение StopIteration, чтобы сообщить вызывающему коду, что итерация завершена.
Любой объект, который реализует методы __iter__() и __next__(), называется итератором. Метод __iter__() возвращает сам итератор, а __next__() возвращает следующий элемент. Когда элементы заканчиваются, __next__() выбрасывает StopIteration. Это позволяет использовать объект в цикле for или вручную вызывать next().
class Counter:
def __init__(self, limit):
self.limit = limit
self.current = 0
def __iter__(self):
return self
def __next__(self):
if self.current >= self.limit:
raise StopIteration
value = self.current
self.current += 1
return value
# Использование
counter = Counter(3)
for num in counter:
print(num) # Вывод: 0, 1, 2Итераторы широко используются в Python для работы с последовательностями, файлами, генераторами и пользовательскими коллекциями. Они позволяют эффективно обрабатывать большие объёмы данных без загрузки всего в память.
Метод __next__() и исключение StopIteration являются основой итерационного протокола Python. Их правильная реализация необходима для создания собственных итераторов, которые могут быть использованы в циклах и других итерационных контекстах.