我只是试图了解变量作用域是如何工作的,然后遇到了以下情况(所有这些都是从终端运行的) :
x = 1
def inc():
x += 5
inc()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in inc
UnboundLocalError: local variable 'x' referenced before assignment
我在想,也许我的方法中没有 x,所以我尝试了:
def inc():
print(x)
1
这样就行了,现在我知道我可以这么做:
def inc():
global x
x += 1
这是可行的,但我的问题是,为什么第一个例子失败了?我的意思是,既然 print(x)
可以工作,那么 x
在函数中是可见的,那么为什么 x += 5
会失败呢?