Если вы столкнулись с какой-то странной проблемой в моей программе. Если упростили мой код на следующее:странная проблема в python: UnboundLocalError: локальная переменная 'y', на которую ссылаются до назначения
def x(y="test"):
def xx():
if False:
y = "blubb"
print y
xx()
print y
x()
Это бросает UnboundLocalError: обращаться до Ошибки присваивания.
Если я исправить код на следующее:
def x(y="test"):
def xx():
print y
xx()
print y
x()
Мой код работает снова. Я на Python 2.7. Я просто понял, что последующее исправление работы, а также и это, как я собираюсь исправить свое программное обеспечение на данный момент: функция
def x(y="test"):
def xx():
_y = y
if False:
_y = "blubb"
print _y
xx()
print y
x()
Назначение 'y' из' 'xx' делает' y' в 'xx' локальным' xx', поэтому оно больше не ищет для него уровня вверх. В Python 3 есть декларация 'nonlocal', которая позволит' xx' изменять 'y' в родительской области, но я не думаю, что вы можете что-то сделать в Python 2. –