Decorator

What is a Decorator?

  • A decorator is a function that takes a function as a parameter, and adds additional responsibility/behaviour of the function (passed as parameter) and then returns it, without modifying that function explicitly.
  • Decorators are also known as meta programming as it modifies scope of function at runtime.

Example: Let’s define a decorator function which decorates an existing function.

def decorate(function):
    def additional():
        print("Existing code got decorated")
        function()
    return additional

def existing():
    print("Existing code")

existing= decorate(existing)
existing()

Output:

Python 3.8.4 (tags/v3.8.2:7b3cb59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32

================== RESTART: C:/Users/PC/Desktop/Hello.py ================
Existing code got decorated
Existing code
  • Python has syntax to simplify the decorator pattern which is called the “pie” syntax.
  • Symbol @ is used to declare the decorators in Python as shown in below example
def decorate(function):
    def additional():
        print("Existing code got decorated")
        function()
    return additional
@decorate
def existing():
    print("Existing code")

existing()

Output:

Python 3.8.4 (tags/v3.8.2:7b3cb59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32

================== RESTART: C:/Users/PC/Desktop/Hello.py ================
Existing code got decorated
Existing code
Subscribe Now