Курс 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. Срез списка в Python
  2. Обработка ошибок ввода данных
  3. Метод append() для списка
  4. Преобразование списка в словарь через генератор
  5. Метод matmul для умножения матриц
  6. Множественное наследование в Python
  7. Анализ текста на русском языке с помощью Pymystem3
  8. Переменная Шредингера
  9. Протокол управления контекстом
  10. Инверсия списков и строк в Python
  11. Объединение словарей в Python
  12. Установка и использование emoji
  13. Преобразование PowerPoint в PDF.
  14. Логирование с Logzero
  15. Установка и использование Virtualenv
  16. Создание тестовых данных с Faker
  17. Поиск HTML-элементов с BeautifulSoup
  18. Цикл for в Python
  19. Замена текста с помощью sub
  20. Избегайте изменяемых аргументов
  21. Подсказки при вводе данных в Python
  22. Создание новых функций с помощью functools.partial
  23. Определение имен функций
  24. Вычисление логарифмов в Python
  25. Очистка данных в Python
  26. Объединение словарей в Python
  27. Уникальные значения из списка
  28. Преобразование Word в PDF с Spire.Doc
  29. Работа с рекламными данными в Pandas
  30. Codecademy в Telegram
  31. Списковое включение в Python
  32. Метод rsub для пользовательских чисел
  33. Создание пар из последовательностей
  34. Условные выражения в Python
  35. Поиск email
  36. Глобальные переменные в Python
  37. Метаклассы в Python
  38. Нахождение отличий в списках
  39. Измерение времени выполнения в Python
  40. Создание множества в Python
  41. Создание и обучение модели с Keras
  42. Работа с модулем Calendar
  43. Numpy: использование Ellipsis
  44. Игра «Камень, ножницы, бумага» — Python
  45. Работа с массивами в Numpy
  46. Python Метод sleep() времени
  47. Преобразование Excel в PDF с Spire.XLS
  48. Поток данных в Python

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