Курс 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. Python Enumerate
  4. split() без разделителя
  5. Python enumerate() использование
  6. Работа с defaultdictами в Python
  7. Оптимизация памяти с помощью __slots__
  8. JMESPath в Python
  9. Работа с YAML в Python
  10. Потоковый ввод в Python
  11. Защита данных в Python
  12. Поиск элементов BeautifulSoup
  13. Progress с библиотекой tqdm
  14. Создание панели меню Tkinter
  15. Строковое представление объектов
  16. Метод getitem для доступа к элементам последовательности
  17. Декораторы с @wraps
  18. Уникальные значения из списка
  19. Получение текущей даты в Python
  20. Сложение матриц в NumPy
  21. Выбор редактора кода.
  22. Оператор распаковки в Python
  23. Обработка аргументов Python
  24. Создание словарей и множеств в Python.
  25. Python Метод sleep() из time
  26. Импорт с альтернативным именем
  27. Работа с пользовательским вводом
  28. Проверка кортежей.
  29. Роль запятой в Python
  30. Работа с Path в Python
  31. Срезы в Python
  32. Работа с файлами в Python
  33. Копирование списков в Python
  34. Создание таблиц в Python с PrettyTable
  35. Списки в Python: основы
  36. Методы сравнения множеств
  37. Объединение словарей в Python
  38. Python Calendar Usage
  39. Генераторы списков в Python
  40. Работа с процессами в Python
  41. Возврат нескольких значений
  42. Переворот списка в Python
  43. Функции map, filter и reduce
  44. Разделение строки с помощью re.split()
  45. Библиотека Chartify: руководство
  46. Удаление ресурса в Python
  47. Преобразование строк в числа в Python
  48. Встраивание HTML в Jupyter Notebook

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