Курс 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. enumerate() в Python для работы с индексами
  3. Модуль Operator в Python
  4. Хранение переменных в словаре.
  5. Работа с аргументами командной строки в Python
  6. Создание списка дат
  7. Поиск индексов в списке
  8. Генераторы списков в Python
  9. Генераторы в Python
  10. Математические функции в Python
  11. lru_cache оптимизация функций
  12. Изменяемые и неизменяемые объекты
  13. Уникальные значения из списка
  14. Открытие, чтение и закрытие файла
  15. Пространство имен в Python
  16. Создание вложенного генератора
  17. Объединение списков в Python
  18. Оператор морж в Python 3.8
  19. Перевернуть список в Python
  20. Метод enumerate() в Python
  21. Группировка элементов Python
  22. Скрытие вывода данных
  23. Оптимизация памяти с помощью __slots__
  24. Экспорт внешнего файла с помощью writefile
  25. Возвращение нескольких значений через кортеж или класс
  26. Проверка вхождения подстроки
  27. Возврат нескольких значений
  28. Библиотека funcy: удобные утилиты
  29. Обход словаря в Python
  30. Глобальные переменные в Python
  31. JMESPath в Python
  32. Установка и использование Python-dateutil
  33. Работа с модулем random
  34. Функция eval() в Python
  35. Поиск самого частого элемента
  36. Оптимизация создания строк
  37. Пропуск строк в файле с itertools
  38. Работа с deque в Python
  39. Упрощенный вывод данных в Python
  40. Работа с файлами и директориями в Python.
  41. UserString в Python
  42. Создание генераторов в Python
  43. Закрытие файла в Python
  44. Управление доступом к модулю
  45. Методы Python для работы с данными

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