
def w(func):
    def wrapper(*args, **kargs): 
        print("Started")
        func(*args, **kargs)		     
        print("Ended")

    return wrapper     	     # Returns a function !

# Instead of writing:
def f1(s):
    print(s)

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

f1("New")
print("---------------------------")

# We can write: ("decorator notation")
@w
def f2(s):	# Function has 1 parameter
    print(s)

f2("New")
