Курс 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. Объединение строк с помощью метода join
  3. Подписка на каналы разработчиков
  4. Просмотр атрибутов и методов класса
  5. Использование функции enumerate()
  6. Работа с файлами в Python
  7. Импорт модулей в Python 3.12
  8. Работа с необработанными строками
  9. Открытие, чтение и закрытие файла
  10. Генератор списка в Python
  11. Метод __imod__ для Python
  12. Структура строк в Python
  13. Нан-рефлексивность в Python
  14. Работа с исключениями в Python
  15. Обработка исключений в Python
  16. Создание итерируемых объектов
  17. Расширение информации об ошибке в Python
  18. Работа с CSV файлами
  19. Создание словаря через dict comprehension
  20. Модуль subprocess: запуск внешних команд
  21. Создание объекта timedelta
  22. Выборка чисел
  23. Фильтрация списка чисел
  24. Изменение элемента списка
  25. Метод __getitem__ в Python
  26. Настройка вывода NumPy
  27. Работа с контекстными менеджерами
  28. Делегирование в Python
  29. Резервирование символов в Python
  30. Поиск файлов по шаблону
  31. Распаковка элементов последовательности
  32. Декораторы в Python
  33. Работа со списками
  34. Инверсия списка и строки в Python
  35. Имена объектов в Python
  36. Обрезка изображения с Pillow
  37. Декораторы в Python
  38. Ветвление выражения в Python
  39. Оператор break в Python
  40. Перезапуск ячейки в Jupyter Notebook с dostoevsky
  41. Выключение компьютера с помощью Python
  42. Объединение списков в Python.
  43. Склеивание строк без циклов
  44. Переопределение метода divmod

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