Курс 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. Метод __float__ в Python
  3. Создание файла с проверкой ошибки
  4. Проверка памяти объекта
  5. Игра Виселица на Python
  6. Работа с itertools
  7. Генерация случайных чисел Python
  8. Работа с временем в Python
  9. Работа с NumPy массивами
  10. Округление банкира в Python
  11. Управление импортом в Python
  12. Получение локальных переменных в Python
  13. Замена текста в Python
  14. Блок else в Python
  15. Применение функции к списку
  16. Генерация UUID в Python
  17. Генераторы данных
  18. Объединение списков в строку
  19. Создание панели меню Tkinter
  20. Преобразование регистра символов
  21. Контроль точности вывода чисел
  22. Генератор бросков кубиков
  23. Декоратор Ajax required
  24. Обработка исключений в Python
  25. Группировка элементов в словарь
  26. Создание новых списков в Python
  27. Работа с парами ключ-значение
  28. Использование html-скриптов в Jupyter Notebook
  29. Удаление специальных символов
  30. Манипуляция формой массива в Numpy
  31. Комментарии в Python
  32. Метод ifloordiv для пользовательских классов
  33. Получение текущей даты в Python
  34. Python-dateutil — работа с датами
  35. Виртуальные среды в Python
  36. Блок try-except-else
  37. Операции со строками в Python
  38. Многострочные строки в Python
  39. Функции all и any в Python
  40. Хэш-функции и метод цепочек
  41. Импорт объектов из модулей
  42. Подсчет элементов в Python
  43. Работа с модулем random
  44. Закрытие файла в Python
  45. Логирование с Logzero: ротация файла

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