> For the complete documentation index, see [llms.txt](https://appsecurity.gitbook.io/devops/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://appsecurity.gitbook.io/devops/ppc/ppc-langs/backend/python/advanced/generators.md).

# Работа с генераторами

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

Генератор — итератор, который можно итерировать только один раз.

Генератор, в отличие от итератора, не хранит последовательность в памяти.

## Еще сложные понятия около генераторов

### Collection comprehensions

Это генераторы коллекций — синтаксический сахар, позволяющий на лету генерить коллекции

### Generator object

Или generator iterator — это функция-генератор, которая один раз отдаст свои объекты (объекты итератора) и все

## Создание генератора

### Через функцию

```python
def get_numbers(start: int = 0, end: int = 1000):
   while start < end:
      yield start
      start += 1      
```

### Через генератор-выражение

```python
iterator = (num for num in range(1000))
```
