Декораторът е шаблон за проектиране в Python, който ви позволява да променяте или подобрявате поведението на функция или метод, без да променяте изходния му код. Декораторите се внедряват като функции от по-висок ред, които приемат функция като вход и връщат нова функция с модифицираното поведение.

За да внедрите декоратор в Python, можете да дефинирате функция, която приема друга функция като аргумент, след което да създадете вложена функция, която обвива оригиналната функция. Можете да добавите желаните модификации или подобрения в рамките на вложената функция. Накрая върнете вложената функция от функцията декоратор.

Ето пример за прост декоратор, който измерва времето, необходимо за изпълнение на дадена функция:

import time

def timing_decorator(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        elapsed_time = end_time - start_time
        print(f"{func.__name__} took {elapsed_time:.2f} seconds to execute.")
        return result

    return wrapper

# Example usage:
@timing_decorator
def some_function(n):
    total = 0
    for i in range(n):
        total += i
    return total

result = some_function(10000000)

В този пример дефинираме декоратор, наречен timing_decorator, който измерва времето, необходимо за изпълнение на дадена функция func. Използваме синтаксиса @timing_decorator, за да приложим декоратора към some_function. Когато се извика some_function(100000), той отпечатва времето, необходимо за изпълнение на функцията, и връща резултата.