Курс 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. Основы работы со строками в Python
  3. Работа с итераторами через срезы
  4. *args и **kwargs в Python
  5. Управление IP-адресами через прокси
  6. Обработка ошибок в Python
  7. Блок else в циклах Python
  8. Применение функции к списку
  9. Поиск наиболее частого элемента
  10. Python Тесты и Гайды
  11. Поиск индекса элемента
  12. Flask: создание веб-приложений
  13. Работа с утверждениями в Python
  14. Анонимные функции Lambda
  15. Установка и загрузка Instaloader
  16. Сравнение def и lambda-функций
  17. Создание новых функций с помощью functools.partial
  18. Преобразование кортежа в словарь.
  19. Потоковый ввод в Python
  20. Ускорение кода с помощью векторизации
  21. Игра «Угадывание чисел»
  22. Отправка POST-запроса в REST API
  23. Быстрый поиск кода
  24. Модуль xkcd: добавление юмора в Python
  25. Тестирование модели в PyTorch
  26. Новшества Flask 2.0
  27. Проверка памяти объекта
  28. Область видимости переменных
  29. Искажение имен в Python
  30. Реализация операции -= для пользовательского класса
  31. Создание списков в Python
  32. Работа с CSV файлами в Python
  33. Возврат нескольких значений
  34. Работа с модулем random
  35. Форматирование кода на Python
  36. Обход словаря в Python
  37. Генерация тестовых данных с factory_boy
  38. Работа с YAML в Python
  39. Конкатенация строк с помощью join()
  40. Форматирование строк в Python
  41. Работа с комбинациями в Python.
  42. Переименование файлов в Python
  43. Просмотр атрибутов и методов класса
  44. Форматирование даты с strftime()
  45. Отрицательные индексы списков
  46. Управление фоновыми задачами в Python
  47. Работа со случайными элементами

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