Program 1
Basic decorator
Add behavior before and after a function call.
python
def log(fn):
def wrapper(*args, **kwargs):
print(f"Calling {fn.__name__}")
result = fn(*args, **kwargs)
print(f"Done {fn.__name__}")
return result
return wrapper
@log
def add(a, b):
return a + b
print(add(2, 3))