Курс 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. Проверка типов с использованием isinstance
  2. Обработка исключений
  3. Создание лямбда-функций
  4. Работа с утверждениями в Python
  5. Именование переменных в Python
  6. Вакансии в Nebius
  7. Мониторинг работы программы Py-spy
  8. Удаление элементов из списка в Python
  9. Участие в LP стейкинге Waves
  10. Проверка существования переменной с оператором :=
  11. Именование столбцов в Python с pandas
  12. ChainMap.new_child() — добавление нового словаря
  13. Множественное наследование в Python
  14. Сортировка элементов с OrderedDict
  15. Передача неизвестных аргументов в Python.
  16. Получение ID текущего процесса
  17. Python: отсутствие точек с запятыми
  18. Форматирование строк в Python
  19. Удаление дубликатов с помощью множеств
  20. Работа с deque из collections
  21. Очистка списка от False, None, 0, «»
  22. Метод __ilshift__ для битового сдвига влево
  23. Копирование объектов в Python
  24. Освоение Python
  25. Работа со словарями в Python
  26. Работа с файлами в Python
  27. Работа с файлами в Python
  28. Установка Git и AWS CLI
  29. Переопределение метода divmod
  30. Обработка исключений в Python
  31. Функция enumerate в Python
  32. Работа со словарями с defaultdict из collections
  33. Декораторы в Python
  34. Печать в одной строке
  35. Обмен данными с asyncio.Queue
  36. Построение графиков в терминале с bashplotlib
  37. Метод add для класса Vector
  38. Работа с Event() в threading
  39. Оператор += для объединения строк
  40. Искажение имен в Python
  41. Переопределение метода sub
  42. Атрибуты класса и экземпляра в Python
  43. Модуль inspect: получение информации о объектах
  44. Переопределение унарных операторов
  45. Представление бесконечности в Python

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