Middle
24
Что такое итератор и итерируемый объект (iterable)? Какие методы они должны реализовывать? Как работает for loop под капотом?
Companies where asked
Answer from AI
sobes.tech AI
Итератор — это объект, который реализует метод __next__(), возвращающий следующий элемент последовательности, и метод __iter__(), который возвращает сам итератор. Итерируемый объект (iterable) — это объект, который реализует метод __iter__(), возвращающий итератор.
То есть:
- iterable должен иметь метод
__iter__(), который возвращает итератор; - итератор должен иметь методы
__iter__()(возвращает себя) и__next__()(возвращает следующий элемент или вызываетStopIteration).
Цикл for под капотом вызывает iter() на итерируемом объекте, чтобы получить итератор, затем в цикле вызывает next() на итераторе, пока не возникнет исключение StopIteration.
Пример:
my_list = [1, 2, 3]
iterator = iter(my_list) # вызывает my_list.__iter__()
print(next(iterator)) # 1
print(next(iterator)) # 2
print(next(iterator)) # 3
# next(iterator) вызовет StopIteration