Python:命名空间,错误:分配前引用'b'局部变量



代码正常运行:

    def my_fun():
        a = b
        a = 5
        print a
    b = 2
    my_fun()
    print b

得到:

5
2

但是如果我这样做了:

    def my_fun():
        a = b
        a = 5
        b = 1
        print a
    b = 2
    my_fun()
    print b

我得到错误:UnboundLocalError: local variable 'b' referenced before assignment

这里发生了什么?虽然b对函数可见,但我不能在函数内更改它?

当您分配b = 1时,解释器开始将b视为局部变量。如果你想分配全局变量b,你必须把语句global b放在函数的开头。

def my_fun():
    global b
    # do stuff
b = 2
my_fun()
print b

相关内容

最新更新