Курс Python → Возврат значений из генератора

Начиная с версии Python 3.3, была добавлена возможность использовать инструкцию return внутри генераторов. Это значительное улучшение, которое позволяет возвращать значения из генератора, что ранее было ограничено только использованием ключевого слова yield. Теперь можно использовать return для возврата значений и завершения работы генератора.

Однако, при использовании return в генераторе, может возникнуть некоторая путаница с ключевым словом yield from. Например, если в генераторе использовать выражение yield from, то return будет работать по-другому. Это может привести к непредвиденным результатам или ошибкам в вашем коде, если не учитывать это особенное поведение.

Согласно официальной документации Python, при использовании инструкции return expr в генераторе, возникает исключение StopIteration(expr), которое сигнализирует о завершении работы генератора и возвращает указанное значение expr. Это важно помнить, чтобы корректно обрабатывать исключения и управлять потоком выполнения программы.


def generator_function():
    yield 1
    yield 2
    return 3

gen = generator_function()
try:
    while True:
        print(next(gen))
except StopIteration as e:
    print("Returned value:", e.value)

Приведенный выше пример демонстрирует использование инструкции return в генераторе. После возврата значения 3 с помощью return, генератор завершает свою работу и возникает исключение StopIteration с переданным значением. Это позволяет программе корректно завершить выполнение и получить возвращенное значение для дальнейшей обработки.

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

Автор урока

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

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

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

  1. Работа с датами в Python
  2. Переопределение метода __eq__
  3. Вставка переменных в шаблоны Flask
  4. Оператор in для проверки наличия элемента
  5. Подписка на @SelectelNews
  6. Преобразование данных в Python
  7. Возврат нескольких значений
  8. Очистка строки в Python
  9. Делегирование в Python
  10. Запуск внешнего кода в Jupyter
  11. Сравнение объектов в Python
  12. Безопасные SQL-запросы в Python 3.11
  13. Справка по импортированным модулям
  14. Метод __index__ в Python
  15. Работа со списками
  16. Работа с комплексными числами
  17. Работа с NumPy
  18. Установка и использование Virtualenv
  19. Декоратор total_ordering для класса Point
  20. Особенности множеств в Python
  21. Анонимные функции в Python
  22. Работа с классами данных
  23. Управление контекстом с помощью декоратора contextmanager
  24. Методы HTTP запросов в Flask
  25. Метод classmethod
  26. Concrete Paths в Python
  27. Работа с модулем glob в Python
  28. TypedDict для kwargs в Python 3.12
  29. Управление асинхронными задачами на Python.
  30. Получение локальных переменных в Python
  31. Метод remove() для удаления элемента из списка
  32. Генераторные функции в Python
  33. Работа с кортежами в Python
  34. Генераторы списков
  35. Модуль itertools: комбинации и перестановки
  36. Область видимости переменных
  37. Возвращение нескольких значений
  38. Подписка на SelectelNews в Twitter
  39. Копирование в Python
  40. Преобразование числа в восьмеричную строку
  41. Функция print() — вывод информации
  42. Поиск индексов подстроки
  43. Форматирование строк в Python
  44. Замена подстроки
  45. Обновление данных через PUT запрос
  46. Определение объема памяти объекта
  47. Оператор Walrus в Python
  48. Блок try…finally в Python

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