/
eb
/
python_learn
Обзор
Документация
Войти
/
eb
/
python_learn
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
function/decorators.py
75 строк
1 KB
EvgeniyBudaev
Декоратор @wraps
12 фев 2021, 08:12
12 фев 2021, 08:12
93999e4
Код
Авторство
О чём код?
from timeit import default_timer as timer import math import time def hello_world(): def internal(): print('Hello, World!') return internal variables = hello_world() variables() # Hello, World! # === def say_somethings(func): func() def hello_python(): print('hello, Python!') say_somethings(hello_python) # hello, Python! # Декораторы def log_decorator(func): def wrap(): print(f'Calling func {func}') func() print(f'Func {func} finished its work') return wrap def hello(): print('hello') wrapped_by_logger = log_decorator(hello) wrapped_by_logger() # == @log_decorator def hello_decorator(): print('hello, decorator!') hello_decorator() # Декоратор для измерения скорости работы функции def measure_time(func): def inner(*args, **kwargs): start = timer() func(*args, **kwargs) end = timer() print(f'Function {func.__name__} took {end-start} for execution') return inner @measure_time def factorial(num): time.sleep(3) print(math.factorial(num)) factorial(100) # Декоратор @wraps from functools import wraps def log_decorator_with_wraps(func): @wraps(func) def wrap(*args, **kwargs): print(f'Calling func {func}') func(*args, **kwargs) print(f'Func {func} finished its work') return wrap @log_decorator_with_wraps def hello_decorator_with_wraps(): print('hello, decorator_with_wraps!') hello_decorator_with_wraps()