Декораторът е шаблон за проектиране в 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)
, той отпечатва времето, необходимо за изпълнение на функцията, и връща резултата.