Курс 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. Печать списка с помощью метода join
  3. Создание треугольника Паскаля
  4. Итерация по копии коллекции
  5. Участие в сообществе @selectel
  6. Получение списка файлов в директории с использованием os
  7. Основы работы со строками в Python
  8. Проверка подстроки в строке
  9. Настройка Cron
  10. Функция reduce() в Python
  11. Список методов и атрибутов
  12. Явный импорт переменных
  13. Получение обратного списка чисел
  14. EMOT преобразование эмодзи в текст
  15. Работа с географическими данными в Python
  16. Создание детектора плагиата
  17. Подсказки типов в Python
  18. Python-dateutil — работа с датами
  19. Очистка данных в Python
  20. Отображение графиков в Jupyter с Matplotlib
  21. Операции с комплексными числами
  22. Удаление эмодзи с помощью pandas
  23. Протокол управления контекстом
  24. Очистка вывода в Python
  25. Подсчет элементов в Python
  26. Управление пакетами с pip
  27. Переменные класса и экземпляра
  28. Модуль xkcd: добавление юмора в Python
  29. Обновление множества в Python
  30. Декораторы в Python
  31. Рекурсия для обращения строки
  32. Удаление ключей из словаря
  33. Генератор надежных паролей
  34. Функции в Python: создание и вызов
  35. Python 3.12: Псевдонимы типов
  36. Магические методы в Python
  37. Константы в модуле cmath
  38. Работа с комплексными числами
  39. Преобразование символов с помощью map
  40. Создание новых функций через partial
  41. Удаление дубликатов с помощью множеств
  42. Логирование с Logzero
  43. Поиск частого элемента
  44. CLI-инструмент howdoi
  45. Декораторы в Python
  46. Модуль os в Python: работа с файлами

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