Что такое генератор и чем отличается от итератора

Серия Не Ван Россум

Что такое генератор и чем отличается от итератора?

Можно сказать, что генератор является частным случаем итератора: он так же имеет методы __next__ и __iter__. Каждый генератор является итератором, но не наоборот.

Генератор использует для возврата значений ключевое слово yield.
Отличие в том, что генератор позволяет упростить код. Генератор не вычисляет и не содержит сразу все итерируемые значения, он генерирует их во время своей работы.

Пример генератора:


def fibonacci():
‧‧‧‧prev, cur = 0, 1
‧‧‧‧while True:
‧‧‧‧‧‧‧‧yield prev
‧‧‧‧‧‧‧‧prev, cur = cur, prev + cur


То есть, каждый элемент последовательности создается по очереди, и отсутствует заранее заготовленный итерируемый объект с данными.
Использование:


for i in fibonacci():
‧‧‧‧print(i)
‧‧‧‧if i > 100:
‧‧‧‧‧‧‧‧break


#сериал101 , #33

Это кросспост из моего Telegram-канала "Не Ван Россум", где я прямо сейчас пишу сериал "101 вопрос про Python" с описанием подводных камней, неочевидностей и загвоздок.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества