Updating global variables from inside a function#
The following code is written so that increase_x
function can increase the value of x
by 1.
def increase_x():
x = x + 1
print('The value of x is', x)
x = 10
increase_x()
However, this results in
UnboundLocalError: local variable 'x' referenced before assignment
Although we could access a global variable from the local scope, we need an additional statement in order to modify a global variable from code in a local scope.
With the example above, you can indicate that x
in increase_x
function is the global variable x
by including the global statement global x
. A global
statement is typically used at the top of a function, by writing global
followed with the name of the variable, as seen in the following.
Once a global
statement is declared, it holds for the entire current code block in the local scope. Now, we have the desired result as follows.
The value of x is 11
In general, you should be careful when updating global state. The more global state you have, the harder your programs are to predict and debug.