Home > Net >  How to understand global and local scopes in Python?
How to understand global and local scopes in Python?

Time:05-20

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.

  • Related