Курс 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. Транспонирование 2D-массива с помощью zip
  3. Метод clear для коллекций
  4. Установка и использование pyshorteners
  5. Избегайте изменяемых аргументов
  6. Генераторы данных
  7. Управление асинхронными задачами на Python.
  8. Проверка подстроки в строке
  9. Списки в Python: основы
  10. Работа с CSV в Python
  11. Проверка элемента в множестве.
  12. Удаление ресурса в Python
  13. Python 3.12: Псевдонимы типов
  14. Расчет времени выполнения кода
  15. Переопределение метода __lshift__
  16. Автоматизация действий с Pyautogui
  17. Возврат нескольких значений
  18. Работа с переменными в Python
  19. Создание объекта timedelta
  20. Тестирование с unittest
  21. Метод rsub в Python: расширение функциональности вычитания
  22. Операторы увеличения и уменьшения переменной
  23. Использование подчеркивания в REPL
  24. Метод lt для сортировки объектов
  25. Хэш-функции и метод цепочек
  26. Профилирование кода на Python
  27. Работа с CSV файлами в Python
  28. Оптимизация памяти с slots
  29. Каналы Senior: Python, Java, Frontend, SQL, C++
  30. Метод pop() списка
  31. Копирование и вставка текста в Python
  32. Команда %dhist — список посещенных каталогов
  33. Инверсия списков и строк в Python
  34. Создание словарей в Python
  35. Применение функции к списку
  36. Копирование списков в Python
  37. Python Аргументы по умолчанию
  38. Функции range() в Python
  39. Измерение времени выполнения кода
  40. Избегайте пустого списка
  41. Список и кортеж в Python
  42. PEP-401: оператор
  43. Установка и обучение ChatterBot
  44. JSON в Python: модуль, dump, dumps, load
  45. Удаление файлов с shutil.os.remove()
  46. Изменения в обработке логических значений
  47. Измерение времени выполнения в Python
  48. Создание именованных кортежей в Python
  49. Библиотека schedule: планировщик задач

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