Курс 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. Работа с модулем cmath
  2. Подробная информация о %pinfo
  3. Управление пакетами с pip
  4. Создание GUI на Tkinter
  5. Преобразование списка в словарь через генератор
  6. Подсчет элементов в списке с Counter
  7. Вызов внешних программ в Python с помощью sh
  8. Работа с контекстным менеджером Pool
  9. Обмен значений переменных в Python
  10. Функциональное программирование в Python
  11. Замена символов в строке
  12. Изменение элемента списка
  13. Вывод символов строки в Python
  14. Роль object и type в Python
  15. Итераторы с потерямиZIP
  16. Отладчик pdb: начало работы
  17. Установка random seed в Python
  18. Оператор «or» в Python
  19. Правила именования переменных
  20. Работа с датой и временем в Python
  21. Разделение строки с помощью split()
  22. Генераторы в Python
  23. Конструктор в Python
  24. Enum в Python
  25. Создание класса очереди
  26. Объединение словарей в Python
  27. Объединение списков в Python
  28. Работа с CSV файлами в Python
  29. Списки: объединение, изменение
  30. Условные выражения в Python
  31. Измерение времени выполнения в Python
  32. Оператор «not» в Python
  33. Создание комплексных чисел
  34. Использование обратной косой черты в f-строках
  35. Работа с timedelta
  36. Поиск индексов в списке
  37. Операции со строками в Python
  38. Названия столбцов в Python таблицах
  39. Списковые включения в Python
  40. Обход дочерних элементов BeautifulSoup
  41. Экранирование символов в Python
  42. Уникальные значения из списка
  43. Хранение данных с помощью dataclasses

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