Python局部和全局变量

时间:2019-05-24 10:49:36

标签: python

def spam():
    print(eggs)
    eggs = 13

eggs = 12
spam()

出现错误:

UnboundLocalError: local variable 'eggs' referenced before assignment

但这不是:

def spam():
    print(eggs)


eggs = 12
spam()

为什么?

1 个答案:

答案 0 :(得分:2)

在第一个示例中,当您执行eggs = 13时,该函数尝试在其范围内查找定义,并假设该定义为局部变量,并且由于该函数中未定义此类变量,因此{{1} }引发异常。

在第二个示例中,由于不存在这样的分配,因此local variable 'eggs' referenced before assignment.是从全局范围eggs中获取的,因此这里不会抛出此类异常

要解决此问题,您需要在函数内分配局部变量eggs=12。在这里,仅引用和更改了局部变量eggs,全局变量eggs相同。

eggs