Курс 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. Функция zip() в Python
  2. Создание новых списков в Python
  3. Хранение данных с помощью dataclasses
  4. Избегайте ошибку FileNotFoundError
  5. Отслеживание прогресса с tqdm
  6. Прокачанный трейсинг ошибок
  7. Сортировка в Python
  8. Отрицательные индексы списков
  9. Получение текущего времени в Python
  10. Транспонирование матрицы
  11. Отображение графиков в Jupyter с Matplotlib
  12. Импорт объектов из модулей
  13. Транспонирование 2D-массива с помощью zip
  14. Работа с контекстными переменными
  15. Создание тестовых данных с Faker
  16. Гибкие функции Python
  17. Работа со словарями Python
  18. Печать календаря
  19. Создание множества в Python
  20. Проверка файла .py на синтаксис.
  21. Руководство по библиотеке pydantic
  22. Объединение кортежей в Python
  23. Работа с SQLite в Python
  24. Множества и frozenset
  25. Шаблоны и наследование в Flask
  26. Списки в Python
  27. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  28. Хранение данных
  29. Создание генераторов
  30. Множественное присваивание в Python
  31. Карта бомбоубежищ в Москве и Питере
  32. Установка виртуального окружения Python
  33. Функция zip() — объединение последовательностей
  34. Работа с очередями в Python
  35. Измерение времени выполнения с помощью time
  36. Структура данных словарь в Python
  37. Распаковка элементов последовательности
  38. Перезагрузка оператора в Python
  39. Курс по дообучению ChatGPT
  40. Проектирование Singleton с метаклассом
  41. Удаление ключа из словаря
  42. Удаление элемента из списка
  43. Цикл for в Python

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