decorator pattern in Python

Python allows you to use decorators in a simpler way with the @ symbol, sometimes called the “pie” syntax. The following example does the exact same thing as the first decorator example,
```
def my_decorator(func):
    def wrapper(*args, **kwargs):
        print("Something is happening before.")
        func(*args, **kwargs)
        print("Something is happening after.")
    return wrapper

@my_decorator
def say(something):
    print(something)
    
say("haha") 
```