scope.py

# Create global variable
gv = "global variable"

def f1():
    # Print global variable
    print(gv)

def f2():
    lv = "local variable"
    # Print local variable
    print(lv)

def f3():
    lv = "local variable"
    def fs():
        # fs is defined in f3 and has
        # access to f3 local variables
        print(lv)
    fs()
    lv = "changed local variable"
    fs()

def f4():
    # Create LOCAL variable "gv"
    # Does NOT change global variable "gv"
    gv = "not global variable"
    # Print LOCAL variable
    print(gv)

def f5():
    f4()
    # Global variable was not changed by f4
    print(gv)

def f6():
    # Is "gv" local or global?
    print(gv)
    gv = "change glabal variable"

print("calling f1")
f1()
print("calling f2")
f2()
print("calling f3")
f3()
print("calling f4")
f4()
print("calling f5")
f5()
print("calling f6")
f6()