Курс Python → Обработка исключения UnboundLocalError

Исключение UnboundLocalError может возникнуть, когда переменная, которая имеет значение, не может быть использована из-за того, что она не была инициализирована в определенной области видимости. Это может произойти из-за того, что переменная была переопределена внутри функции, делая ее локальной и скрывая другие переменные с таким же именем из внешних областей.

Для примера, рассмотрим следующий код:


def foo():
    x = 10
    print(x)
    x = 20
    print(x)
    print(y)

y = 5
foo()

В этом примере, переменная x в функции foo присваивается новое значение, что делает ее локальной переменной внутри функции. Когда функция пытается напечатать переменную y, которая не была инициализирована внутри функции, возникает исключение UnboundLocalError.

Чтобы избежать этой ошибки, можно явно указать, что переменная не является локальной, используя ключевое слово global или nonlocal. Например:


def foo():
    global x
    x = 10
    print(x)
    x = 20
    print(x)
    print(y)

y = 5
foo()

В этом случае, переменная x будет использоваться как глобальная переменная, и исключение UnboundLocalError не будет возникать.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Получение текущей директории
  2. Python Ellipsis использование
  3. Анализ кода — Python
  4. Возвращение нескольких значений через кортеж или класс
  5. Работа с кортежами в Python
  6. Функция eval() в Python
  7. Частичное совпадение пользовательского ввода в Python 3.10
  8. Именованные аргументы в Python
  9. Основные функции и модули Python
  10. Создание и инициализация объектов
  11. Повторение элементов списков
  12. Конкатенация строк в Python
  13. Создание словарей в Python
  14. Декораторы в Python
  15. Комментарии в Python
  16. Очистка входных данных
  17. Кортежи в Python: особенности и преимущества
  18. Очистка строки в Python
  19. Оператор is в Python
  20. Метод remove() для удаления элемента из списка
  21. Создание генераторов в Python
  22. Списковое включение в Python
  23. Отладка производительности Python
  24. Сортировка в Python
  25. Numpy: использование Ellipsis
  26. Генерация случайных чисел в Python
  27. Аннотации типов в Python
  28. Переопределение метода __and__
  29. Работа с индексами списков
  30. Метод __call__ в Python
  31. Методы HTTP запросов в Flask
  32. Оператор continue в Python
  33. Лямбда-функции в Python
  34. Отслеживание прогресса с tqdm
  35. Генератор бросков кубиков
  36. Создание класса в Python
  37. Обработка исключений в Python 3
  38. Импортирование в Python
  39. Метод pos в Python
  40. Установка random seed в Python
  41. Проверка типа данных
  42. Возврат нескольких значений из функции
  43. Декоратор @override
  44. Наследование в программировании
  45. Генерация строк с .join()

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