4

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

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()

会好的。任何建议或指示都会很棒。非常感谢!

4

1 回答 1

10

global如果不使用以下语句,您将无法修改全局变量:

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

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

于 2013-05-02T07:13:46.223 回答