Курс 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. Добавление кнопки в tkinter
  5. Бинарный поиск
  6. Операторы сравнения в Python
  7. Присоединение элементов коллекции
  8. Оператор in в Python
  9. Асинхронный код в Python
  10. Возвращение нескольких значений
  11. Функция с **kwargs в Python
  12. Определение размера папок в Python
  13. Форматирование строк в Python
  14. Подписка на SelectelNews в Twitter
  15. Docstring в Python
  16. Применение команды break
  17. Проверка типа объекта в Python
  18. Множественное наследование в Python
  19. Управление памятью в numpy.
  20. Оболочка Python
  21. Применение функции к элементам списка
  22. Проверка файла .py на синтаксис.
  23. Метод clear для коллекций
  24. Concrete Paths — метод .with_suffix()
  25. Декоратор @override
  26. Удаление специальных символов
  27. Метод title() в Python
  28. Печать комбинаций в Python с Itertools
  29. Python Менеджер контекста
  30. Lambda Functions in Python
  31. Создание новых списков в Python
  32. Разработка игры Pong с turtle
  33. Закрытие файла в Python
  34. Функция zip() — объединение последовательностей
  35. Списковое включение в Python
  36. Генератор списка с условием if
  37. Исправление ошибки NameError
  38. Преобразование генераторов в циклы
  39. Мониторинг работы программы Py-spy
  40. Использование функции enumerate()
  41. Работа с YAML в Python
  42. Декораторы классов
  43. Динамические маршруты во Flask
  44. Удаление файлов в Python

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