def spam():
print(eggs)
eggs = 13
eggs = 12
spam()
出现错误:
UnboundLocalError: local variable 'eggs' referenced before assignment
但这不是:
def spam():
print(eggs)
eggs = 12
spam()
为什么?
答案 0 :(得分:2)
在第一个示例中,当您执行eggs = 13
时,该函数尝试在其范围内查找定义,并假设该定义为局部变量,并且由于该函数中未定义此类变量,因此{{1} }引发异常。
在第二个示例中,由于不存在这样的分配,因此local variable 'eggs' referenced before assignment.
是从全局范围eggs
中获取的,因此这里不会抛出此类异常
要解决此问题,您需要在函数内分配局部变量eggs=12
。在这里,仅引用和更改了局部变量eggs
,全局变量eggs
相同。
eggs