Курс 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. Функции map, filter и reduce
  2. Работа с байтовыми строками в Python
  3. Создание Radio кнопок в tkinter
  4. Использование метода lower()
  5. Метод rename() для переименования файлов и каталогов
  6. Функция zip() в Python
  7. Импорт классов из другого файла
  8. Создание новых функций с помощью functools.partial
  9. Concrete Paths в Python
  10. Метод ipow для возведения в степень
  11. Руководство по Pymorphy2
  12. Метод __irshift__ для Python
  13. Создание пользовательской коллекции в Python
  14. Antigravity модуль
  15. Транспонирование 2D-массива с помощью zip
  16. Вывод баннеров
  17. Сокращение ссылок с pyshorteners
  18. Метод сравнения объектов в Python
  19. Оператор is в Python
  20. Выборка чисел
  21. Копирование словарей и списков в Python
  22. Изменение элемента списка
  23. Структура данных deque в Python
  24. Преобразование символов с помощью map
  25. Обработка StopIteration в Python
  26. Создание и инициализация объектов
  27. Модуль xkcd: добавление юмора в Python
  28. Метод gt в Python
  29. Сравнение def и lambda в Python
  30. Удаление ключей из словаря
  31. Работа с асинхронными задачами в Python
  32. Метод setitem в Python
  33. Выключение компьютера с помощью Python
  34. Сглаживание списка
  35. Проверка запуска скрипта или импорта модуля
  36. Создание таблиц в Python с PrettyTable
  37. Нахождение самого длинного слова в списке с помощью max
  38. Псевдонимы в Python
  39. Работа с zip-архивами в Python
  40. Асинхронное программирование с asyncio
  41. Декоратор защиты анонимных пользователей
  42. Работа с датой и временем в Python
  43. Переопределение метода __or__()
  44. Лямбда-функции в defaultdict
  45. Атрибуты класса и экземпляра
  46. Обработка исключений в Python

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