Генератор - это особый тип итератора в Python. Он позволяет создавать итераторы без необходимости писать полноценный класс с методами __iter__() и __next__(). Генераторы используют ключевое слово yield для возврата элементов по одному за итерацию, сохраняя при этом свое внутреннее состояние.
Основные отличия от обычных функций:
yield вместо return: Функция-генератор использует yield для возврата значения и приостановки выполнения. При следующем вызове с помощью метода next() или в цикле, выполнение возобновляется с того места, где было yield.Примеры использования:
python
python
Generators expressions - краткий синтаксис для создания генераторов:
python
Сравнение с list comprehensions:
| Признак | Генераторные выражения | Списковые включения (List Comprehensions) |
|---|---|---|
| Возврат значений | По одному (yield) | Все сразу |
| Память | Экономит | Требует много (для больших данных) |
| Тип объекта | Генератор | Список |
| Использование | Итерация | Итерация, индексация, срезы |
Генераторы широко используются в стандартных библиотеках и сторонних пакетах Python (например, в библиотеках для обработки данных). Они являются мощным инструментом для написания эффективного и читаемого кода.