
def exp_builder(e):

    def skel_exp(x):
        return(x**e)

    return skel_exp    # It is not returning a value; 
                       # it is returning the "skel_exp" function !!

exp2 = exp_builder(2)
print(exp2)
print(exp2(4))

exp3 = exp_builder(3)
print(exp3)
print(exp3(4))

# ------------------- THIS does NOT work:

def skel_exp2(x):
    return(x**e)       # NO compile time error (e is assumed global !)

def exp_builder2(e):
    return skel_exp2   # It is not returning a value; 
                       # it is returning the "skel_exp" function !!

exp2 = exp_builder2(2)
print(exp2(4))         # NameError: name 'e' is not defined

