Курс Python → Обработка StopIteration в Python

При написании кода на Python важно помнить о том, что исключения, такие как StopIteration, могут возникать при работе с генераторами. Например, если у вас есть функция some_func(), которая возвращает значения с помощью ключевого слова yield, то при вызове этой функции с аргументом 3 может возникнуть исключение StopIteration.

Это происходит из-за того, что внутри функции some_func() есть оператор return, который завершает выполнение функции. При использовании этой функции в конструкции list(…) или в цикле for, исключение StopIteration будет автоматически перехвачено, что приведет к тому, что список значений будет пустым.

Чтобы избежать этой ситуации и получить нужное нам значение, например, [«wtf»], от генератора some_func(), необходимо явно обработать исключение StopIteration. Для этого можно использовать конструкцию try-except, которая позволит перехватить исключение и выполнить необходимые действия для обработки этой ситуации.


def some_func(n):
    for i in range(n):
        yield "wtf"
        
gen = some_func(3)
result = []
try:
    while True:
        result.append(next(gen))
except StopIteration:
    pass

print(result)  # Выведет: ["wtf"]

В данном примере мы создали генератор some_func(), который возвращает значение «wtf» заданное количество раз. Затем мы вызываем этот генератор с аргументом 3 и явно перехватываем исключение StopIteration с помощью конструкции try-except. Таким образом, мы можем получить нужное нам значение и избежать пустого списка.

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

Автор урока

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

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

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

  1. Упрощение работы с JSON-данными в Python
  2. Генерация случайных чисел в Python
  3. Любовь к Python
  4. Проверка ввода с помощью isdigit
  5. Список методов и атрибутов
  6. Дизассемблирование Python кода
  7. Установка random seed в Python
  8. Операции с датами в Python
  9. Метод lt для сортировки объектов
  10. Работа с массивами в Numpy
  11. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  12. Списки в Python
  13. Объединение словарей в Python
  14. Методы сравнения множеств
  15. Инверсия списка/строки в Python
  16. Логирование с Loguru
  17. Создание списков в Python
  18. Генераторы в Python
  19. Сложные типы данных в Python
  20. Виртуальное окружение Python
  21. Выборка чисел
  22. Ключевое слово global в Python
  23. Работа со строками в Python.
  24. Работа с процессами в Python
  25. Функция reduce() из модуля functools
  26. Переопределение метода len
  27. Проблемы с dict в Python
  28. Работа с датой и временем в Python
  29. Инвертирование словаря
  30. Проверка типа объекта в Python
  31. Python enumerate() функции
  32. Создание новых списков в Python
  33. Возврат значений из генератора
  34. Работа со стеком в Python
  35. Мониторинг работы программы Py-spy
  36. Функция sleep() в Python
  37. None в Python: использование и особенности
  38. Деление в Python
  39. Транспонирование 2D-массива с помощью zip
  40. Получение обратного списка чисел
  41. Работа со строками в Python
  42. Метод eq для сравнения объектов
  43. Получение текущей директории
  44. Декораторы в Python
  45. Вычисление фазы комплексного числа
  46. Модуль antigravity: генерация координат
  47. Регистрация на хакатоне
  48. Создание новых списков

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