关于python:unboundlocalerror:分配前引用的局部变量”a”

UnboundLocalError: local variable 'a' referenced before assignment

本问题已经有最佳答案,请猛点这里访问。

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

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

1
2
3
4
5
6
7
8
9
10
11
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()

但修改为:

1
2
3
4
5
6
7
8
9
10
11
12
13
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()

会好的。任何建议或指点都是了不起的。谢谢!


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

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

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