Курс Python → Генераторы в Python

Генераторы в Python — это специальный тип функций, позволяющих создавать итерируемые объекты. Вместо ключевого слова return они используют ключевое слово yield для возврата значений. Когда функция с генератором вызывается, она не выполняется до конца, а приостанавливается на каждом выражении yield, возвращая значение. При следующем вызове функции, выполнение продолжается с того же места, где оно было приостановлено.

Генераторы позволяют экономить память, так как они не хранят весь набор значений в памяти, а генерируют их по мере необходимости. Это особенно полезно, когда нужно обрабатывать большие объемы данных или когда набор значений бесконечен. Генераторы могут использоваться в циклах for для итерации по значениям, а также в выражениях генераторов и функциях map, filter.


# Пример генератора, возвращающего квадраты чисел
def squares(n):
    for i in range(n):
        yield i ** 2
        
# Использование генератора в цикле
for num in squares(5):
    print(num)

Важно помнить, что генераторы в Python являются итерируемыми объектами, поэтому после того как все значения были возвращены, генератор исчерпывается и вызов функции next() на нем вызовет исключение StopIteration. Также можно использовать цикл while и обработку исключения StopIteration для обхода всех значений генератора.

Генераторы позволяют упростить и оптимизировать код, делая его более читаемым и эффективным. Они являются важной частью функционального программирования в Python и могут быть использованы для создания более компактного и элегантного кода. Используйте генераторы там, где это возможно, для улучшения производительности и удобства вашего кода.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Необязательные аргументы в Python
  2. Метод split() в Python
  3. Оператор in для проверки наличия элемента
  4. Возврат нескольких значений
  5. Переопределение унарных операторов
  6. Возвращение нескольких значений
  7. Разделение строки с помощью re.split()
  8. Работа с контекстными переменными
  9. Принцип одной функции
  10. Генерация резюме в Gensim
  11. Генераторы данных
  12. Капитализация строк
  13. Инверсия списков и строк в Python
  14. Профилирование с cProfile
  15. Установка и использование howdoi
  16. Распаковка элементов последовательности
  17. Резервирование символов в Python
  18. Вложенные генераторы в Python
  19. Названия столбцов в Python таблицах
  20. Работа с множествами в Python
  21. Перевод двоичного кода в целое число
  22. Работа с deque из collections
  23. Удаление элемента по индексу в Python
  24. Удаление ключей из словаря
  25. Метод add для класса Vector
  26. JMESPath в Python
  27. Переопределение метода
  28. Сортировка с помощью key
  29. Метод classmethod
  30. Импорт модулей в Python 3.12
  31. Блок else в циклах Python
  32. Генераторы в Python
  33. Определение размера папок в Python
  34. Метод eq для сравнения объектов
  35. Создание матрицы в Python
  36. Хешируемые ключи в Python
  37. Декораторы классов
  38. Установка максимального количества цифр
  39. Удаление символа из строки
  40. Извлечение новостей с помощью newspaper3k
  41. Разбиение текста в Python
  42. Python Поверхностное Копирование
  43. Документация функции help() в Python
  44. Улучшенные подсказки для импорта в Python 3.12
  45. Хэш-функции и метод цепочек

Marketello читают маркетологи из крутых компаний