Курс 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. Проверка запуска скрипта или импорта модуля
  4. Проверка типа данных
  5. Оптимизация методов в Python 3.7
  6. Декоратор защиты анонимных пользователей
  7. Создание графиков в терминале
  8. Работа с коллекциями Python
  9. Аннотации типов в Python
  10. Обработка StopIteration в Python
  11. Проверка на истинность объектов в Python
  12. Инверсия списков и строк в Python
  13. Работа с эмодзи в Python
  14. Создание тестовых данных с Faker
  15. Итераторы в Python
  16. Область видимости переменных
  17. Проверка версии Python
  18. Подсчет элементов в списке с Counter
  19. Функции в Python: создание и вызов
  20. Измерение времени выполнения кода
  21. Python reversed() vs срез[::-1]
  22. Объединение словарей в Python
  23. Метод invert для побитового отрицания
  24. Работа с аргументами командной строки в Python
  25. Функция zip() в Python
  26. Хеши в Python
  27. Работа с географическими данными.
  28. Генерация UUID в Python
  29. Логирование в Python
  30. Python: Фильтрация списков с помощью filter()
  31. Скачать видео с YouTube
  32. Создание вложенного генератора
  33. Кортеж в Python: создание и использование
  34. Гибкие функции Python
  35. Цикл for в Python
  36. Аннотации типов в Python
  37. Класс UserDict: дополнительная функциональность
  38. Просмотр внешнего файла в Python
  39. Область видимости переменных
  40. Enum в Python: создание и использование перечислений
  41. Операторы объединения в Python 3.9
  42. Константы в модуле cmath
  43. Множества и frozenset
  44. Генераторы в Python
  45. Чтение бинарного файла в Python.
  46. Импорт в Python: список all
  47. Метод hash в Python

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