for. 😵💫❗️ В Python любой объект, который можно обойти с помощью цикла
for, является итерируемым.💡 Каждый раз, когда выполняется цикл
for, Python сначала получает специальный объект — итератор. Для этого неявно вызывается встроенная функция iter(), в которую передается сам итерируемый объект.🔮 Все дело в том, что у каждого итерируемого объекта есть магический метод
__iter__(), который возвращает итератор. Именно этот метод вызывает функция iter().📌 Итератор — это объект, который обеспечивает последовательный доступ к элементам коллекции. Он выдает элементы по одному и хранит текущее состояние обхода.
Дальше цикл
for работает уже с итератором: на каждой итерации он запрашивает у него следующий элемент и получает их до тех пор, пока элементы не закончатся.⚠️ При вызове функции
iter() сначала проверяется, реализован ли у объекта метод __iter__(). Если да, вызывается именно он. Если же метод __iter__() отсутствует, но реализован метод __getitem__(), Python создает итератор, который извлекает элементы по индексам, начиная с 0.Если ни один из этих методов не реализован, объект не считается итерируемым, и при попытке вызвать
iter() будет возбуждено исключение TypeError: '<тип объекта>' object is not iterable.➡️ Более подробно про итерируемые объекты и итераторы мы говорим в наших курсах для профессионалов и ООП. Напоминаем, что до конца июня курсы можно купить со скидкой 1500 рублей!
Ставьте реакцию:
🔥 — если знали, как работает цикл
for👀 — если узнали об этом впервые
#python #ооп #профи
