Курс 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. Участие в сообществе @selectel
  2. Использование двоеточия в Python
  3. Группировка элементов Python
  4. Вакансии в Nebius
  5. Названия переменных
  6. Сокращение ссылок с pyshorteners
  7. Работа с байтовыми строками в Python
  8. Парсинг статей с Newspaper3k
  9. Изменение IP-адреса в Python
  10. Работа с JSON в Python
  11. Генерация чисел с range()
  12. Python reversed() функция
  13. Асинхронное программирование с asyncio
  14. Лямбда-функции в Python
  15. Объединение итераторов
  16. Создание словарей с defaultdict()
  17. Создание множества в Python
  18. Сортировка HTML по CSS-селектору
  19. Навыки Python: строки, типы данных
  20. Отслеживание прогресса с tqdm
  21. Объединение словарей в Python
  22. Справка по импортированным модулям
  23. Метод split() в Python
  24. Повторение элементов в Python
  25. Магические методы в Python
  26. Работа с множествами в Python
  27. Преобразование строки в число
  28. Оператор += для объединения строк
  29. Нахождение самого длинного слова в списке с помощью max
  30. Класс Counter() для подсчета элементов
  31. Метод join() для объединения элементов в строку.
  32. Работа с временем в Python
  33. Структура строк в Python
  34. Генерация фальшивых данных с Faker
  35. Обработка ошибок ввода данных
  36. Метод pos в Python
  37. Howdoi — получение ответов из терминала
  38. Введение в Python
  39. Измерение времени выполнения в Python
  40. Преобразование числа в восьмеричную строку
  41. Поиск простых чисел
  42. Расчет времени выполнения
  43. Логические операторы в Python
  44. Разделение функций на этапы
  45. Отслеживание выполнения программы с библиотекой tqdm
  46. Метод repr() в Python
  47. Построение графиков в Matplotlib
  48. Работа с кортежами в Python

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