In Python, a decorator is a special type of function that can modify the behavior of another function without changing its source code. Decorators are often used to add extra functionality to functions, like logging or timing, without cluttering up the function with additional code.
Here’s an example of a simple decorator function in Python:
def my_decorator(func): def wrapper(): print("Before the function is called.") func() print("After the function is called.") return wrapper @my_decorator def say_hello(): print("Hello!") say_hello()
In this example,
my_decorator is a function that takes another function
func as an argument, and returns a new function
wrapper is the decorated function that will replace
@my_decorator syntax is used to apply the decorator to the
say_hello() function. This is equivalent to calling
say_hello = my_decorator(say_hello).
say_hello() is called, it will actually call the
wrapper() function instead.
wrapper() will print “Before the function is called.”, call
func() (which is the original
say_hello() function), and then print “After the function is called.”
The output of this example would be:
Before the function is called. Hello! After the function is called.
Decorators can be very powerful, and are often used in conjunction with other Python features like classes and context managers.