Курс 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. Операции с комплексными числами
  3. Моржовый оператор в Python 3.8
  4. Создание вложенных циклов for
  5. Импорт объектов из модулей
  6. Функция zip() в Python
  7. Разделение строки на подстроки в Python
  8. Многопоточность в Python
  9. Метод сравнения объектов в Python
  10. Передача параметров в Python
  11. Аннотации типов в Python
  12. Списковые включения в Python
  13. Функция enumerate() в Python
  14. Метод rsub для пользовательских чисел
  15. Создание словарей с defaultdict()
  16. Работа с множествами в Python
  17. Изменение списка срезом
  18. Скрытие вывода данных
  19. Функции с необязательными аргументами
  20. Запрос пароля с помощью getpass
  21. Структура строк в Python
  22. Работа с модулем bisect
  23. Модуль xkcd: загрузка комиксов
  24. Хеширование паролей с использованием salt
  25. Списки в Python
  26. Работа с CSV в Python
  27. Атрибуты класса и экземпляра
  28. Перевод двоичного кода в целое число
  29. Модуль subprocess: запуск внешних команд
  30. Декораторы в Python
  31. Метод округления чисел
  32. Методы HTTP запросов в Flask
  33. Оптимизация поиска в словарях
  34. Применение функции к списку
  35. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  36. Курс Data Scientist в медицине
  37. Обрезка изображения с Pillow
  38. Модуль future Python
  39. Основы работы с os
  40. Улучшенные подсказки для импорта в Python 3.12
  41. Скачать видео с YouTube
  42. Декоратор @override
  43. Функция zip() в Python
  44. Разрешение имен в Python
  45. Работа с функцией next() в Python
  46. Создание списка через итерацию

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