Курс 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. Bootle — простой веб-фреймворк
  2. Установка и использование Logzero
  3. Классы данных в Python
  4. Декоратор защиты анонимных пользователей
  5. Сортировка с помощью key
  6. Список импортированных модулей в Python
  7. Отправка HTTP-запросов в Python
  8. Работа с временем в Python
  9. Операторы объединения в Python 3.9
  10. Поиск подстроки в строке
  11. Измерение времени выполнения
  12. Документирование функций в Python
  13. Функции с дополнением
  14. Работа с Telegram API на Python
  15. Применение функции map() в Python
  16. Оператор «or» в Python
  17. Основы работы со строками в Python
  18. Создание namedtuple из словаря
  19. Непрерывная проверка в Python
  20. Работа с многоуровневыми словарями в Python
  21. Множественное присваивание в Python
  22. Регистрация на хакатоне
  23. Декораторы классов
  24. Управление контекстом выполнения кода
  25. Извлечение статей с newspaper3k
  26. Игра «Камень, ножницы, бумага» — Python
  27. Оператор in и not in в Python
  28. Solidity для DeFi Ethereum
  29. Генераторы в Python
  30. Оператор морж в Python 3.8
  31. Логические операторы в Python
  32. Чтение бинарного файла в Python.
  33. Инициализация структур данных
  34. Контроль точности вывода чисел
  35. Работа с часовыми поясами в Python
  36. Поиск шаблона в начале строки
  37. Работа со строками в Python.
  38. Генераторы данных
  39. Преобразование типов данных в set comprehension
  40. Преобразование регистра строк
  41. Склеивание строк через метод join()
  42. Генерация чисел с range()
  43. Применение функции map() с лямбда-функциями
  44. Метод __getitem__ в Python
  45. Открытие и запись файлов
  46. Flask: создание веб-приложений

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