Генератор — это функция, которая возвращает последовательность значений лениво (по требованию). Генераторы создаются с помощью ключевого слова yield и позволяют сохранять состояние между вызовами. Они не хранят все элементы в памяти, что эффективно для работы с большими данными. Когда функция содержит yield, она автоматически становится генератором. При вызове next() выполнение функции приостанавливается на yield, а при следующем вызове возобновляется с того же места. Аналогичны списковым включениям, но используют круглые скобки () и возвращают элементы по одному. Критерий Списковое включение Генератор Память Хранит все элементы в памяти Генерирует элементы на лету Использование Для небольших данных Для больших данных Пример [x**2 for x in range(10)] (x**2 for x in range(10)) Передает значение в генератор (становится результатом yield). Вызывает исключение внутри генератора. Останавл