Курс 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. Определение индекса элемента списка
  3. Тип данных TypeVarTuple
  4. Срез в Python
  5. UserList в Python: Описание и примеры использования
  6. Методы обработки строк в Python
  7. Проверка типов с помощью isinstance
  8. Замыкания в Python
  9. Запуск внешних программ с subprocess
  10. Переопределение оператора % для объектов
  11. F-строки в Python 3.8
  12. Итерация по коллекции в Python
  13. Поток данных в Python
  14. TON Smart Challenge #2: участие и подготовка
  15. Расчет времени выполнения
  16. Возврат нескольких значений
  17. Функции с дополнением
  18. Декораторы в Python
  19. Оптимизация создания строк
  20. Работа с контекстным менеджером Pool
  21. Изменение объектов в Python
  22. Инверсия списков и строк в Python
  23. Копирование словарей и списков в Python
  24. Применение функции к каждому элементу списка
  25. Работа с изображениями PIL
  26. Официальный канал Python в Telegram
  27. Создание пользовательской коллекции в Python
  28. Работа с defaultdictами в Python
  29. Перехват исключений в Python
  30. Параллельные вычисления в Python
  31. Работа с комплексными числами
  32. Создание генераторов в Python
  33. Настройка логгера Logzero
  34. Поиск файлов по шаблону
  35. Оператор assert в Python
  36. Преобразование чисел в восьмеричную строку
  37. Мониторинг памяти с Pympler
  38. Делегирование в Python
  39. Возврат нескольких значений
  40. Обход элементов в Python
  41. Контроль точности вывода чисел
  42. Повторение элементов списков
  43. Любовь к Python
  44. Описание скриптов в README

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