python中关于范围的奇怪错误

时间:2018-08-14 21:16:23

标签: python python-3.x

x = 5
def foobar():
    print (x) #Prints global value of x, which is 5
    x = 1 #assigns local variable x to 1
foobar()

相反,它会抛出

UnboundLocalError: local variable 'x' referenced before assignment

我在评论中误解了什么?请注意,我知道如果我执行x = x + 1,则会由于“在定义之前访问本地作用域x的值”而抛出错误,但是在这种情况下,我正在执行x = 1,这不需要读取x的现值!这不是重复的问题。

1 个答案:

答案 0 :(得分:1)

如果要在python函数中更改全局变量值,则必须这样做

x = 5
def foobar():
    global x
    print (x) #Prints global value of x, which is 5
    x = 1 #assigns local variable x to 1
foobar()