-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdecorator.py
More file actions
27 lines (21 loc) · 1.4 KB
/
decorator.py
File metadata and controls
27 lines (21 loc) · 1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from typing import Callable
import time
"""
Декоратор — это языковая конструкция (механизм), которая позволяет добавлять новый функционал к нашей функции, не видоизменяя саму функцию.
Декоратор создаёт "обёртку" вокруг исходной функции. Функция помещается внутрь другой функции (wrapper),
которая может выполнять дополнительный код до и после вызова оригинальной функции.
При этом сама декорируемая функция остаётся нетронутой — меняется только способ её вызова
"""
def empty_deco(func): # Декоратор принимает функцию (без дополнительного функционала (identity decorator))
def wrapper(): # Создаёт обёртку
start = time.time()
res = func()
end = time.time()
print(f"Исполнение заняло {end-start}")
return wrapper # Возвращает обёртку
@empty_deco
def my_func():
time.sleep(0.6)
return 124
print(my_func())
my_func = empty_deco(my_func) # Декоратор - синтаксический сахар такой конструкции