Для обсуждения я задам следующий вопрос, основанный на Python 3.6.1
Я прочитал из книги [Learning Python] (5-е издание, глава 20, стр. 614), что:
Как мы видели, фундаментальные встроенные инструменты, такие как диапазон, карта, словарные ключи и даже файлы, теперь являются генераторами, поэтому вы должны быть знакомы с концепцией, даже если вы не создаете собственных собственных генераторов.
Это ложное утверждение?
Я думал, что объект, являющийся итератором, является необходимым, но не достаточным условием, чтобы он был генератором. То есть, итератор генераторов всегда является генератором.
Однако клавиши диапазона и словаря являются итерабельными, но они НЕ являются их собственными итераторами. Если они не являются итераторами, как они могут быть генераторами?
Иногда люди используют "генератор" для обозначения ленивых итераций, хотя это не точное определение. В Python 3 диапазон является ленивым итерабельным.