Курс 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. Транспонирование матрицы в Python
  2. Объединение списков с использованием itertools.chain
  3. Копирование в Python
  4. Лямбда-функции в Python
  5. Решатель судоку на Python с pygame
  6. Python reversed() функция
  7. Путь к интерпретатору Python
  8. Импорт объектов из модулей
  9. Работа с CSV в Python
  10. Python union() функция — объединение множеств
  11. Оператор in для проверки наличия элемента
  12. Операторы увеличения и уменьшения переменной
  13. Деление в Python
  14. Работа с модулем os в Python
  15. Хэш-функции и метод цепочек
  16. Присоединение элементов коллекции
  17. Объединение словарей в Python
  18. Генераторы в Python
  19. Печать комбинаций в Python с Itertools
  20. Метод enumerate() в Python
  21. Метод splitlines() для разделения строк
  22. Возвращение нескольких значений
  23. Модуль future Python
  24. Установка и использование Python-dateutil
  25. Область видимости переменных
  26. Получение срезов итераторов
  27. Декоратор проверки активности
  28. Экранирование символов в Python
  29. Метод Self в Python
  30. Объединение, распаковка и деструктуризация
  31. Регулярные выражения в Python
  32. Форматирование строк в Python
  33. Именование столбцов в Python с pandas
  34. Очистка данных с Pandas
  35. Блок else в обработке исключений
  36. Декораторы в Python
  37. Вложенные генераторы в Python
  38. Извлечение аудио из видео
  39. Управление экспортом элементов
  40. Применение команды break
  41. Округление в Python
  42. Функции с необязательными аргументами
  43. Имена объектов в Python
  44. Анонимные функции Lambda

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