
def w(func):
    def wrapper():           # This function is LOCAL to w( )
        print("Started")
        func()
        print("Ended")

    return wrapper     	     # Returns a function !


def f1():
    print("Hello")

f1()

# f1 is a VARIABLE and can be assigned....

f1 = w(f1)      # Pass f1 to w() and receive a NEW function f2
f1()

f1 = w(f1)      # Pass f1 to w() and receive a NEW function f2
f1()
