for перебирает элементы итерируемого объекта с помощью итератора. А сегодня поговорим про сами итераторы. 😎📌 Итератор — это объект, который обеспечивает последовательный доступ к элементам коллекции. Он выдает элементы по одному и хранит текущее состояние обхода.
У итератора есть два ключевых метода, реализующих протокол итератора:
1️⃣
__iter__() — возвращает самого себя. Нужен для того, чтобы любой итератор можно было использовать там, где ожидается итерируемый объект (например, в for). Проще говоря, итератор тоже является итерируемым объектом.2️⃣
__next__() — возвращает очередной элемент.С помощью функции
iter() мы можем получить итератор из итерируемого объекта. После этого мы можем передавать его встроенной функции next(), которая вызывает метод __next__() у итератора и возвращает очередной элемент.Когда элементы заканчиваются, метод
__next__() возбуждает исключение StopIteration и итератор становится совершенно бесполезным. Цикл for обрабатывает это исключение автоматически и завершает выполнение.Представить работу цикла:
for x in obj:
print(x)
можно следующим образом:
it = iter(obj)
while True:
try:
print(next(it))
except StopIteration:
break
👀 Более подробно об итераторах и о том, как можно реализовывать собственные итераторы, мы рассказываем в наших курсах для профессионалов и ООП. Напоминаем, что до 15 сентября действует скидка 2000 рублей при покупке любого нашего курса!
Ставьте реакцию:
❤️ — если уже прошли итераторы в наших курсах
🔥 — если проходите их прямо сейчас
👀 — если еще не добрались до итераторов
#полезныйматериал #python #ооп
