Table of Contents

Introduction

In Python, a decorator is a special kind of function that can be used to modify the behavior of other functions or classes.

Decorators are a powerful feature of the language that allow you to add additional functionality to code without modifying the original code itself.

Decorators are defined using the @ symbol, followed by the name of the decorator function.

Example

@decorator_function
def some_function():
    # function code here

The decorator function can then modify the behavior of the function that follows it.

This can be useful for tasks such as adding additional logging or error checking to a function,
or for creating more concise and readable code by separating concerns into different functions.

Here’s an example of a decorator function that logs the execution time of a function:

import time
from functtools import wraps

def performance(func: Callable) -> Callable:
    # we wrap the function
    @wraps(func)
    def wrapper(*args: Tuple, **kwargs) -> None:
        func_name = f"'{func.__name}'"
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        run_time = end_time - start_time
        print(f"Execution time for the function {func_name}: {run_time:.3f} seconds")
        return result
    return wrapper

This decorator can then be used to time any function by simply adding the @performance decorator above the function definition:

@performance
def my_function():
    # function code here

When my_function is called, it will automatically be timed and the execution time will be printed to the console.

Last modified: September 13, 2023

Author

Comments

Write a Reply or Comment

Your email address will not be published.