Cоздадим список "L", который явл. итерируемым объектом но не итератором, мы не можем к нему применить next(L) или L.__next__()
L = [1,2,3,4,5]
Теперь создадим итератор для этого списка, здесь мы уже можем применять эти фунции к "I"
I = iter(L)
Если в цикл for передать "I" то он начнет переберать его с помощь __next__(). Вопрос - что он(Python) делает когдя я передаю в for "L“? Он автоматически создает итератор для него, или же он использует что то другое?
Я натыкался на такое выражение ”протокол доступа по индексам", если он существует то с помощью какой функции ведется перебор, если такая функция существует то я могу перебрать его без цыкла for (так же как и итератор списка через __next__())?
Я подмал что может быть, Python не создавая итератор может перебрать список просто от 0 до выброса исключения, но как в таком случае он перебирает словарь?