Creates or Updates a global variable from a nonglobal scope
global keyword is used to create or update a global variable from a nonglobal scope (such as inside a function or a class).
|var1,var2,…||Required||List of identifiers you want to declare global|
Modifying Globals Inside a Function
A variable declared outside all functions has a GLOBAL SCOPE. It is accessible throughout the file, and also inside any file which imports that file.
x = 42 # global scope x def myfunc(): print(x) # x is 42 inside def myfunc() print(x) # x is 42 outside def
Although you can access global variables inside or outside of a function, you cannot modify it inside a function.
Here’s an example that tries to reassign a global variable inside a function.
x = 42 # global scope x def myfunc(): x = 0 print(x) # local x is now 0 myfunc() print(x) # global x is still 42
Here, the value of global variable
x didn’t change. Because Python created a new local variable named
x; which disappears when the function ends, and has no effect on the global variable.
To access the global variable rather than the local one, you need to explicitly declare
x global, using the
x = 42 # global scope x def myfunc(): global x # declare x global x = 0 print(x) # global x is now 0 myfunc() print(x) # global x is 0
x inside the function now refers to the
x outside the function, so changing
x inside the function changes the
x outside it.
Here’s another example that tries to update a global variable inside a function.
x = 42 # global scope x def myfunc(): x = x + 1 # raises UnboundLocalError print(x) myfunc()
Here, Python assumes that
x is a local variable, which means that you are reading it before defining it.
The solution, again, is to declare
x = 42 # global scope x def myfunc(): global x x = x + 1 # global x is now 43 print(x) myfunc() print(x) # global x is 43
There’s another way to update a global variable from a no-global scope – use globals() function.
Create Globals Inside a Function
When you declare a variable global, it is added to global scope, if not already present. For example, you can declare x global inside a function and access it outside the function.
def myfunc(): global x # x should now be global x = 42 myfunc() print(x) # x is 42