Курс 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. Список переменных с %who
  2. Управление виртуальными средами в Python
  3. Метод init в Python
  4. Поиск кода
  5. Применение команды break
  6. Потоковый ввод в Python
  7. Определение объема памяти объекта
  8. Нахождение отличий в списках
  9. Множественное присваивание в Python
  10. Удаление и повторная вставка ключа в OrderedDict
  11. Просмотр внешнего файла в Python
  12. Списковое включение в Python
  13. Многопоточность в Python
  14. Оператор «not» в Python
  15. Работа с IP-адресами в Python
  16. Преобразование строк в числа в Python
  17. Именованные кортежи в Python
  18. Работа с WindowsPath()
  19. Оператор * в Python
  20. Оператор assert в Python
  21. Форматирование строк в Python
  22. Mad Libs Generator
  23. Асинхронное программирование с asyncio
  24. Поиск повторов в списке
  25. Генераторы списков в Python
  26. Комментарии в Python
  27. Проверка строки на палиндром
  28. Метод __iand__ для пользовательских классов
  29. Работа с областями видимости переменных
  30. Функция zip() в Python
  31. Вызов функций по строке в Python.
  32. Оператор Walrus: правильное использование
  33. Создание матрицы в Python
  34. Метод title() в Python
  35. Метод get для словарей
  36. Объединение словарей в Python
  37. Метод lt для сортировки объектов
  38. Подсчет элементов в Python
  39. Использование метода lower()
  40. Пустой оператор pass в Python
  41. Удаление пробелов методом translate()
  42. Удаление дубликатов из списка
  43. Измерение времени выполнения кода в Python
  44. Методы сравнения множеств
  45. Явный импорт переменных
  46. Создание .exe файла с pyinstaller

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