Variable scoping in Python
Institute for Environmental and Spatial Analysis...University of North Georgia
Contents
1 Global variables
Global variables are available “globally.”
def f():
print(a)
a = 'Global?'
f()
Try to change a global variable.
def f():
a = 'Local!'
print(a)
a = 'Global?'
f()
print(a)
1.1 Global and local
You cannot access the same variable globally and locally.
def f():
print(a)
a = 'Local!'
print(a)
a = 'Global?'
f()
print(a)
Any variables that are assigned or modified inside a function become local.
1.2 Explicit declaration
You can modify global variables inside a function.
def f():
global a
print(a)
a = 'Modified global'
print(a)
a = 'Global?'
f()
print(a)
2 Local variables
Local variables are only accessible from where they are defined.
def f():
a = 'I am local!'
print(a)
f()
print(a)
3 Nonlocal variables
Nonlocal variables are similar to global variables, but you cannot modify them from a nested function.
def f():
a = 'Local'
print('Inside f: ' + a)
def g():
nonlocal a
a = 'Modified local'
print('Inside g: ' + a)
g()
print('Inside f: ' + a)
a = 'Global?'
f()
print(a)
3.1 Nonlocal vs. global variables
Global variables are modifiable anywhere as long as they are declared as global
.
def f():
a = 'Local'
print('Inside f: ' + a)
def g():
global a
a = 'Modified global'
print('Inside g: ' + a)
g()
print('Inside f: ' + a)
a = 'Global?'
f()
print(a)