Курс 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"
- Взаимодействие с sys
- Решение переменной Шредингера
- Создание функций высшего порядка
- Измерение потребления памяти при сортировке
- Утечки переменных цикла в Python 3.x
- Объединение словарей в Python
- Декораторы с аргументами
- Создание панели меню Tkinter
- Функции map, filter и reduce
- Перемешивание списка с shuffle()
- Разделение строки с помощью re.split()
- Метод title() в Python
- Модуль subprocess: запуск внешних команд
- Логические операторы в Python
- Форматирование заголовков в Python
- Удаление и повторная вставка ключа в OrderedDict
- Создание коллекций из выражения-генератора
- Копирование файлов с shutil()
- Наиболее частотные элементы с помощью Counter
- Python Метод Union Множеств
- Удаление специальных символов
- Обработка исключений в Python
- Работа со списками
- Генератор чисел Фибоначчи
- Beautiful Soup — извлечение данных из HTML
- Удаление пробелов методом translate()
- Копирование в Python
- Многострочные комментарии в Python
- Переопределение метода
- Функция divmod() в Python
- Декораторы в Python
- Метод add для класса Vector
- Список переменных с %who
- Добавление элементов в список
- Активация Matplotlib в Jupyter
- Метод сравнения объектов в Python
- Работа с очередями в Python
- Преобразование регистра символов
- Атрибуты объекта в Python
- Распаковка аргументов в Python
- Импорт и использование модулей в Python
- Логирование с Loguru
- Генераторы списков в Python
- Частичное совпадение пользовательского ввода в Python 3.10
- Декораторы в Python
- Библиотека sh: удобные команды терминала
- Форматирование строк в Python















