Нет. range является итерируемым (iterable), но не итератором (iterator).
Является ли объект Range итератором?
Нет. range является итерируемым (iterable), но не итератором (iterator).
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Нет. range является итерируемым (iterable), но не итератором (iterator).
- Итерируемый объект - это объект, который может возвращать итератор. У него есть метод
__iter__(). - Итератор - это объект, который поддерживает протокол итератора. У него есть метод
__next__()и метод__iter__(), который возвращает сам себя.
Объект range генерирует значения по требованию, но не хранит их в памяти, что делает его эффективным для больших последовательностей.
# Пример использования range
my_range = range(5)
# my_range итерируемый
print(hasattr(my_range, '__iter__')) # Вывод: True
# Он может возвращать итератор
my_iterator = iter(my_range)
print(hasattr(my_iterator, '__next__')) # Вывод: True