I am a novice in Python and wondering the situation below.
x = 1
def func():
print(x)
x = 2
return x
So I got the UnboundLocalError: local variable 'x' referenced before assignment. But if I right understand - Python read and execute code row by row. So in first statement inside function "print(x)" it must just relay global variable x which eq. 1, but instead I got the error. Please explain, I think it simple.
CodePudding user response:
I think your problem was explained as well in the FAQ of python docs
This is because when you make an assignment to a variable in a scope, that variable becomes local to that scope and shadows any similarly named variable in the outer scope. Since the last statement in foo assigns a new value to x, the compiler recognizes it as a local variable. Consequently when the earlier print(x) attempts to print the uninitialized local variable and an error results.