Курс 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. Метод join() для объединения элементов строки
  2. Defaultdict в Python
  3. Переопределение метода __floordiv__
  4. Тайное преобразование типа ключа
  5. Многострочные комментарии в Python
  6. Константы в модуле cmath
  7. Генераторные функции в Python
  8. Преобразование списков в словарь
  9. Управление виртуальными средами в Python
  10. Получение идентификатора объекта в памяти
  11. Создание и использование модулей в Python
  12. Именованные срезы в Python
  13. Оператор Walrus в Python 3.8
  14. Метод lt для сортировки объектов
  15. Разделение строки с помощью re.split()
  16. Объединение списков в Python
  17. Фильтрация списка от «ложных» значений
  18. Блок else в циклах.
  19. Управление фоновыми задачами в Python
  20. Операции с матрицами в Python
  21. Работа со словарями
  22. Атрибуты класса и экземпляра
  23. Оператор «is not» в Python
  24. Декораторы для регистрации функций
  25. Обязательные аргументы в Python
  26. Установка пакета в Python
  27. Генерация случайных чисел Python
  28. Бесконечные списки в Python
  29. Оператор объединения словарей
  30. Переворот последовательности
  31. Декораторы в Python
  32. Вычисление логарифмов в Python
  33. Переворот строки с использованием цикла
  34. Проверка списка: any() и all()
  35. Перезапуск ячейки в Jupyter Notebook с dostoevsky
  36. Реализация метода __abs__ в Python
  37. Работа с CSV файлами в Python
  38. Функциональное программирование.
  39. Работа с областями видимости переменных
  40. Объединение, распаковка и деструктуризация
  41. Импорт классов из другого файла
  42. Обработка исключений в Python
  43. Анонимные функции Lambda
  44. Хешируемые ключи в Python

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