Курс Python → Генераторы в Python
Генераторы в Python — это функции, которые используют ключевое слово `yield` вместо `return`. Когда функция с `yield` вызывается, она возвращает объект-генератор, который можно итерировать по одному значению за раз. При каждой итерации генератор запоминает свое состояние, чтобы продолжить выполнение с того же места. Это позволяет экономить память и увеличивает производительность при работе с большими объемами данных.
Пример создания простого генератора:
def my_generator():
for i in range(5):
yield i
gen = my_generator()
for val in gen:
print(val)
В этом примере функция `my_generator` возвращает генератор, который поочередно выдает числа от 0 до 4. При каждой итерации цикла `for` будет выводиться следующее значение, не храня все значения в памяти одновременно.
Генераторы также могут быть бесконечными, если они используют цикл `while` или рекурсию. Они позволяют эффективно обрабатывать потенциально бесконечные последовательности данных, такие как потоки сетевых пакетов или событий.
Помимо создания собственных генераторов, в Python есть встроенные функции, которые возвращают генераторы. Например, функция `range()` возвращает ленивую последовательность чисел, что позволяет эффективно работать с большими диапазонами значений без необходимости хранить их все в памяти.
Использование генераторов в Python помогает сделать код более читаемым, компактным и эффективным. Они позволяют работать с данными по требованию, что особенно важно при обработке больших объемов информации или при работе с потенциально бесконечными последовательностями.
Другие уроки курса "Python"
- Проверка списка: any() и all()
- F-строки в Python
- Математические функции в Python
- Лимиты на ресурсы Python
- Работа с библиотекой requests
- Копирование словарей и списков в Python
- Документация функции help() в Python
- Переворот списка в Python
- Возврат нескольких значений
- Работа с контекст-менеджером «with»
- Создание именованных кортежей в Python
- Оператор (*) в Python
- Профилирование кода на Python
- Работа с датой и временем в Python
- Генераторы списков
- Сортировка списка по индексам
- Метод __index__ в Python
- Сравнение def и lambda в Python
- Работа с defaultdictами в Python
- Функция zip() — объединение последовательностей
- Создание списка через итерацию
- JMESPath в Python
- Python enumerate() использование
- Использование модуля __future__
- Импорт модулей в Python 3.12
- Метод is_absolute() для PurePath
- Python OrderedDict и fromkeys() — работа с словарями
- Мониторинг работы программы Py-spy
- Атрибуты массивов в Numpy
- Оператор is в Python
- Нахождение хеша для бесконечности и NaN в Python
- Разделение строки с помощью re.split()
- Метод gt в Python
- Регулярные выражения: метод match
- Метод ipow для возведения в степень
- Ограничение ресурсов в Python
- Функция product() в Python
- Управление асинхронными задачами с помощью Semaphore
- Итерация по копии коллекции
- Избегание циклических зависимостей классов в Python
- Получение идентификатора объекта в памяти
- Защита данных в Python
- Создание новых списков
- Основы работы с os
- Определение индекса элемента списка















