The following code:
x = 0
print "Initialization: ", x
def f1():
x = 1
print "In f1 before f2:", x
def f2():
global x
x = 2
print "In f2: ", x
f2()
print "In f1 after f2: ", x
f1()
print "Final: ", x
prints:
Initialization: 0
In f1 before f2: 1
In f2: 2
In f1 after f2: 1
Final: 2
Is there a way for f2 to access f1‘s variables?
You can access the variables, the problem is the assignment. In Python 2 there is no way to rebind
xto a new value. See PEP 227 (nested scopes) for more on this.In Python 3 you can use the new
nonlocalkeyword instead ofglobal. See PEP 3104.