Курс 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. Логирование с Logzero
  3. Контекстный менеджер в Python
  4. Получение пути к текущему скрипту с помощью os
  5. Метод classmethod
  6. Атрибуты массивов в Numpy
  7. Лямбда-функции в Python
  8. Переменная с нижним подчеркиванием
  9. Глобальные переменные в Python
  10. Бинарный поиск
  11. Переопределение оператора % для объектов
  12. Присвоение значений переменным в Python
  13. Значения по умолчанию в Python
  14. Создание OrderedDict
  15. Список методов и атрибутов
  16. Рекурсия для обращения строки
  17. Colorama: окрашивание текста в Python
  18. Проверка версии Python
  19. Методы split() и join() — Python строк.
  20. Работа с файлами в Python
  21. Использование модуля __future__
  22. Операции с массивами в NumPy
  23. Вложенные генераторы в Python
  24. Перегрузка операторов в Python
  25. Преобразование строк в числа в Python
  26. Обработка исключений
  27. Абстракции словарей и множеств в Python
  28. Работа с модулем random
  29. Правила именования переменных
  30. Использование функции enumerate()
  31. Расчет времени выполнения
  32. Проверка однородности элементов списка
  33. Операция += для списков
  34. Создание класса в Python
  35. Упрощенный вывод данных в Python
  36. Метод rename() для переименования файлов и каталогов
  37. Progress с библиотекой tqdm
  38. Многопоточность и асинхронное программирование в Python
  39. Создание словаря в Python
  40. Оператор «or» в Python
  41. Создание коллекций из выражения-генератора
  42. Основы работы с базами данных в Python
  43. Метод remove() для удаления элемента из списка
  44. Работа со строками в Python.
  45. Генераторы в Python
  46. Именование столбцов в Python с pandas
  47. Объединение словарей в Python
  48. Pretty-printing JSON в Python

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