Курс 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. Мониторинг памяти с Pympler
  3. JMESPath в Python
  4. Создание панели меню Tkinter
  5. Экранирование символов в Python
  6. Декоратор @override
  7. Работа с Enum в Python3.
  8. Переопределение метода sub
  9. Python itertools combinations() — группировка элементов
  10. Управление импортом в Python
  11. Генераторы в Python
  12. Lambda-функция в Python: использование с map() и sum()
  13. Метод join() для объединения элементов
  14. Шаблоны Flask: условия и циклы
  15. Переопределение унарных операторов
  16. Управление памятью в numpy.
  17. Метод append() для списка
  18. Сортировка в Python
  19. Присвоение и ссылки
  20. Подписка на SelectelNews в Twitter
  21. Преобразование кортежа в словарь.
  22. Правила именования переменных
  23. Векторизация в Python с NumPy.
  24. Преобразование строк в числа с плавающей запятой
  25. Метаклассы в Python
  26. Непрерывная проверка в Python
  27. Описание скриптов в README
  28. Оператор continue в Python
  29. Измерение времени выполнения кода
  30. Хешируемые ключи в Python
  31. Функция reduce() из модуля functools
  32. Комплексные числа в Python
  33. Метод invert для побитового отрицания
  34. Поиск файлов по шаблону
  35. Solidity для DeFi Ethereum
  36. Экспорт внешнего файла с помощью writefile
  37. Тестирование с responses
  38. Функция eval() в Python
  39. Тернарный оператор в Python
  40. Аннотации типов в Python
  41. Метод index() в Python
  42. Измерение времени выполнения с помощью time
  43. Обмен значений переменных в Python
  44. Оператор деления для класса Rational
  45. Итерации в Python
  46. Оформление текста в консоли с TermColor

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