Исключение, возникающее при обращении к несвязанной переменной.

Поднимается в случае обращения к локальной переменной (в функции/методе), с которой [ранее] не было связано значение.

    outer = 1

def update_outer():
# Строка ниже поднимает исключение:
# UnboundLocalError: local variable 'outer' referenced before assignment
if outer == 1:
outer = 2

update_outer()

В примере выше внутри функции update_outer переменная outer считается локальной потому что именно там (ниже по коду) она связывается со значением 2, поэтому обращение к переменной в условии if outer == 1 вызывает исключение. Если подразумевается, что функция должна обновить значение переменной outer из внешней области следует воспользоваться специальными инструкциями global или nonlocal.
Синонимы поиска: UnboundLocalError
На заметку
У нас есть представительство во ВКонтакте. Ссылка в самом низу страницы.