What is a decorator in Python?

Table of Contents

Introduction

A decorator in Python is a powerful and flexible tool used to modify or extend the behavior of functions or methods without altering their actual code. Decorators allow for clean and reusable code by "wrapping" another function with additional functionality, making them a key feature in Python’s support for higher-order functions.

Decorators are commonly used for tasks such as logging, access control, timing functions, memoization, and more.

How Do Python Decorators Work?

Basic Concept of a Decorator

In Python, a decorator is a function that takes another function as input, adds some code (or behavior) to it, and then returns the modified function. This allows for easily extending the behavior of functions or methods.

The decorator function is often applied using the @ symbol just before a function definition.

Example of a Basic Decorator:

Output:

In this example, the decorator decorator_function modifies the behavior of the display() function by printing a message before calling the original function.

Understanding Decorators with Parameters

If the function being decorated has arguments, the decorator must be flexible enough to accept any number of arguments. This can be done using *args and **kwargs.

Example of a Decorator with Arguments:

Output:

Practical Use Cases of Python Decorators

1. Logging Function Calls

Decorators are often used to log function calls, making it easy to track which functions were executed and with what parameters.

Output:

2. Timing Functions

Decorators can also be used to time how long a function takes to execute, which is helpful in performance monitoring.

Output:

Chaining Multiple Decorators

You can apply multiple decorators to a function. Decorators are applied in the order they appear, starting from the bottom up.

Example of Chaining Decorators:

Output:

Conclusion

Decorators in Python provide a simple yet powerful way to modify the behavior of functions and methods, enabling code reuse and cleaner design patterns. They are used for logging, access control, timing, and much more. Understanding decorators helps you write more concise and efficient Python code, and is essential when working on larger projects.

Similar Questions