Курс 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. Проверка надежности пароля на Python
  2. Модуль Operator в Python
  3. Создание таблиц в терминале с PrettyTable
  4. Частичное применение функций в Python
  5. Concrete Paths в Python
  6. Лямбда-функции в Python
  7. Форматирование данных с pprint
  8. Обмен значений переменных в Python
  9. Декоратор Property в Python
  10. Конструктор в Python
  11. Создание словарей с defaultdict()
  12. Создание списка через итерацию
  13. Создание генераторов в Python
  14. Сумма элементов списка
  15. Роль object и type в Python
  16. Antigravity модуль
  17. Повторение элементов списков
  18. Декораторы в Python
  19. Карта бомбоубежищ в Москве и Питере
  20. Работа с датой и временем в Python
  21. Сохранение и загрузка модели в PyTorch
  22. Уникальность ключей в словаре
  23. Искажение имен в Python
  24. Работа со строками в Python
  25. Транспонирование 2D-массива с помощью zip
  26. Numpy: использование Ellipsis
  27. Работа с файлами в Python
  28. Работа с библиотекой requests
  29. Пропуск строк в файле с itertools
  30. Функция zip() в Python
  31. Bootle — простой веб-фреймворк
  32. Справка по импортированным модулям
  33. Создание веб-приложения с Flask
  34. Метод __imod__ для Python
  35. GitHub в Telegram: подписка на уведомления
  36. Печать календаря в Python
  37. Создание копии списка в Python
  38. Инициализация структур данных
  39. Метод rename() для переименования файлов и каталогов
  40. Создание GUI на Tkinter
  41. Логирование с Logzero
  42. Область видимости переменных
  43. Форматирование строк в Python
  44. Метод setitem в Python
  45. Декоратор Ajax required
  46. Python groupby() из itertools: работа с повторяющимися элементами

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