UnboundLocalError:赋值前引用的局部变量'a'

时间:2013-05-02 07:11:05

标签: python

如果执行以下代码将显示错误消息:

UnboundLocalError:分配前引用的局部变量'a'

a = 220.0
b = 4300.0
c = 230.0/4300.0

def fun():
    while (c > a/b):
        a = a + 1
        print a/b

if __name__ == '__main__':
    fun()

但修改为:

a = 220.0
b = 4300.0
c = 230.0/4300.0

def fun():
    aa = a
    bb = b
    while (c > aa/bb):
        aa = aa + 1
        print aa/bb

if __name__ == '__main__':
    fun()

没关系。 任何建议或指示都会很棒。非常感谢!

1 个答案:

答案 0 :(得分:9)

如果不使用global语句,则无法修改全局变量:

def fun():
    global a 
    while (c > a/b):
        a = a + 1
        print a/b

一旦python看到像a = a + 1这样的赋值语句,它认为变量a是局部变量,并且当调用该函数时,表达式c > a/b将引发错误,因为{ {1}}尚未定义。