Курс 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. Вставка переменных в шаблоны Flask
  3. Метод __ilshift__ для битового сдвига влево
  4. Фильтрация данных в Python.
  5. Работа с модулем Calendar
  6. Разделение строк в Python
  7. Методы в Python
  8. Создание пар из последовательностей
  9. Декоратор Ajax required
  10. Удаление файлов с shutil.os.remove()
  11. Импорт модулей в Python 3.12
  12. F-строки в Python 3.8
  13. Оптимизация методов в Python 3.7
  14. Python reversed() vs срез[::-1]
  15. Удаление элемента из списка в Python
  16. Вычисление логарифмов в Python
  17. Математические функции в Python
  18. Метод getitem для доступа к элементам последовательности
  19. Форматирование строк в Python.
  20. Перемещение и удаление файлов в Python
  21. Создание пустых функций и классов в Python
  22. Проверка существования переменной с оператором :=
  23. Возведение в квадрат с помощью itertools
  24. Декораторы в Python
  25. Обработка исключений
  26. Пространство имен в Python
  27. Управление асинхронными задачами на Python.
  28. Комментарии в Python.
  29. Конкатенация строк в Python
  30. Модуль os в Python: работа с файлами
  31. Упрощение работы с JSON-данными в Python
  32. Метод difference_update() — разность множеств
  33. Установка пакета в Python
  34. Метод init в Python
  35. Копирование в Python
  36. Возвращение нескольких значений
  37. Сложные типы данных в Python
  38. Обработка ошибок в Python
  39. Именованные срезы в Python
  40. Методы сравнения множеств
  41. Философия Python
  42. Метод join() для объединения элементов строки
  43. Ускорение обработки данных с %autoawait
  44. Работа с часовыми поясами в Python.
  45. Проверка окончания строки с помощью str.endswith()
  46. Многострочные строки в Python

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