Middle
Czym jest iterator i obiekt iterowalny? Jakie metody muszą implementować? Jak działa pętla for od kuchni?
sobes.tech AI
Odpowiedź od 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