How to use a global variable in a function?

global-variables, python, scope

Solution

You can use a global variable within other functions by declaring it as `global` within each function that assigns a value to it:

globvar = 0

def set_globvar_to_one():
    global globvar    # Needed to modify global copy of globvar
    globvar = 1

def print_globvar():
    print(globvar)     # No need for global declaration to read value of globvar

set_globvar_to_one()
print_globvar()       # Prints 1

Since it's unclear whether `globvar = 1` is creating a local variable or changing a global variable, Python defaults to creating a local variable, and makes you explicitly choose the other behavior with the `global` keyword.

See other answers if you want to share a global variable across modules.

Problem

How do I create or use a global variable inside a function? How do I use a global variable that was defined in one function inside other functions? Failing to use the `global` keyword where appropriate often causes `UnboundLocalError`. The precise rules for this are explained at UnboundLocalError on local variable when reassigned after first use. Generally, please close other questions as a duplicate of that question when an explanation is sought, and this question when someone simply needs to know the `global` keyword.

Original source

Related problems