iterable означает, что объект может быть повторен. Обычно это означает, что iter () может быть вызван для экземпляра для получения итератора.
iterator - это объект, который выполняет итерацию. Они также являются итеративными, то есть их можно вызывать в iter () и возвращать ... самим. Вызывая next () для него, итератор возвращает следующий объект в последовательности.
Просто: все итераторы и итераторы дают итератор при вызове с помощью iter (). Все итераторы дают следующий элемент в последовательности при вызове с помощью next ().
Итераторы являются однопроходными, потому что это облегчает жизнь программиста. Это может быть передано в качестве итератора: (x*3 for x in range(10))
Так же можно это сделать:
__iter__(self):
for x in range(10):
yield x*3
Если бы они были многопроходными, каждый из них должен был бы быть запрограммирован внутри другого l oop, добавление дополнительной работы программисту итератора.
Если вы хотите пройти снова, получите новый итератор из итерируемого, когда у итератора заканчиваются элементы для возврата. :)