Курс 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. Установка и использование модуля «howdoi»
  2. Работа с множествами в Python
  3. Операторы сравнения в Python
  4. Получение текущей директории
  5. Объединение словарей в Python 3.5+
  6. Метод title() в Python
  7. Операции с кортежами
  8. Настройка вывода NumPy
  9. Функция zip() в Python
  10. Избегайте использования goto
  11. Операторы объединения в Python 3.9
  12. Обязательные аргументы в Python
  13. Работа с набором данных CIFAR10 в PyTorch
  14. Асинхронное выполнение задач в процессах
  15. Отделение звука от видео
  16. Метод enumerate() в Python
  17. Капитализация строк
  18. PUT запрос для обновления данных
  19. Реверс строки в Python
  20. Работа с путями в Python
  21. Метод repr() в Python
  22. Создание пар из последовательностей
  23. Именование переменных в Python
  24. Оптимизация создания строк
  25. Однострочники Python
  26. Преобразование букв в нижний регистр
  27. Преобразование данных в Python
  28. Импорт и использование модулей в Python
  29. Удаление первого элемента списка
  30. Функция product() в Python
  31. Обработка данных в Python
  32. Работа с файлами и директориями в Python.
  33. Форматирование строк в Python
  34. JMESPath в Python
  35. Построение графиков в Matplotlib
  36. Пространство имен в Python
  37. Взаимодействие с внешними процессами в Python
  38. Оценка точности модели
  39. Импорт модулей и пакетов в Python
  40. Различия символов в Python
  41. Генератор списка с условием if
  42. Подсчет количества элементов в списке
  43. Область видимости переменных в Python
  44. JSON в Python: модуль, dump, dumps, load
  45. Модуль Operator в Python
  46. Сортировка данных с лямбда-функциями
  47. Отслеживание выполнения программы с библиотекой tqdm
  48. Управление виртуальными окружениями в Python

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