Курс 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. Капитализация строк
  2. Операции с числами в Python
  3. Namedtuple в Python
  4. Оператор объединения словарей
  5. Установка переменной среды в Python
  6. Python 3.12: переиспользование кавычек
  7. Кортеж в Python: создание и использование
  8. Работа с путями в Python
  9. Автоматизация действий с Pyautogui
  10. Python enumerate() использование
  11. Копирование в Python
  12. Метод get() в Python
  13. Лямбда-функции в Python
  14. Пропуск начальных строк с помощью dropwhile()
  15. ChainMap избыточные ключи
  16. Список и кортеж в Python
  17. Импортирование в Python
  18. Измерение времени выполнения кода с помощью time
  19. Генераторы в Python
  20. Метод __getitem__ в Python
  21. Удаление первого элемента списка
  22. Функции range() в Python
  23. Python: возвращение нескольких значений
  24. Генераторы в Python
  25. Создание графиков в терминале
  26. Ускорение обработки данных с %autoawait
  27. Списки в Python
  28. Сериализация данных в JSON с помощью json.dumps
  29. Проверка типа объекта в Python
  30. Метод join() для объединения элементов строки
  31. Преобразование range в итератор
  32. Сортировка элементов с OrderedDict
  33. Частичное совпадение пользовательского ввода в Python 3.10
  34. Улучшенные подсказки для импорта в Python 3.12
  35. Проверка элемента в множестве.
  36. Многострочные комментарии в Python
  37. Блок try…finally в Python
  38. Метод __ilshift__ для битового сдвига влево
  39. Метод count() для списков
  40. %pinfo: получение информации об объекте
  41. Генераторы в Python
  42. Вычисление разности множеств в Python
  43. Преобразование чисел в Python
  44. Функция с *args.
  45. Работа с YAML в Python
  46. Добавление вложенных списков
  47. Создание объекта timedelta
  48. Заказ карты Тинькофф Black

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