Мне известен этот вопрос:
Разница между генераторами и итераторами Python
Это более широко и менее технически обосновано. И ни один из ответов не был выбран. Я также прочитал эти ответы и, за одним возможным исключением, не нашел то, что искал. Я хочу sh задать более точный вопрос, чтобы помочь мне понять некоторые детали.
Я задал этот вопрос ранее:
В чем разница между иттератором python и a python generator?
Возможно, название или способ, которым я задал вопрос, вводили в заблуждение, поскольку полученный мной ответ не соответствовал моим намерениям, и вопрос был закрыт в считанные секунды.
Итак, я попытаюсь уточнить здесь.
Рассмотрим следующий код:
p = [k for k in range(1,1000)]
i = iter(p)
g = (k for k in p)
Есть ли какая-то операция, которая может быть выполнена с i и g, которая будет различать guish между этими двумя конструкциями. Что-то, что я могу сделать с i, что я не могу сделать с g, и тому подобное. Их тип выглядит как итератор списка по сравнению с объектом-генератором, но мне неясно, имеет ли это какое-либо прагматическое c влияние на то, что с ним можно делать, или на его эффективность. Я намеренно сначала составил список, чтобы подчеркнуть, что вопрос создания списка заранее или по требованию не в том, о чем идет речь. this - генераторы являются частным случаем итераторов, и все, что вы можете делать с построением генератора, используя либо понимания, либо yield, можно сделать, явно написав соответствующий итератор. Обоснование использования генератора, а не итератора, состоит в том, что иногда его проще писать. 1028 * Как написать класс генератора?