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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
""" ------------------------------------------------
describe: Decorators
base_info: __author__ = "PyGo" __time__ = "2023/10/22 20:58" __version__ = "v.1.0.0" __mail__ = "gaoming971366@163.com" __blog__ = "www.pygo2.top" __project__ = "open2lisapi"
usage:
@deprecated @timer @debug def add(a, b, *args, **kwargs): for i in range(10): print(i)
add(100, 300, 1000, c=2000, d=2000)
design:
reference urls:
python version: python3
Enjoy the good life everyday!!! Life is short, I use python.
------------------------------------------------ """
from datetime import datetime from functools import wraps import warnings
def decorator(func): """ 装饰器模板 """ @wraps(func) def __wrapper(*args, **kwargs): result = func(*args, **kwargs) print("[Decorator] >>>>> %s." % func.__name__) return result return __wrapper
def timer(func): """ 方法执行时间装饰器 """ @wraps(func) def __wrapper(*args, **kwargs): start_time = datetime.now() result = func(*args, **kwargs) end_time = datetime.now() cost = round((end_time - start_time).microseconds * pow(0.1, 6), 3) print("[timer] >>>>> %s cost %s seconds." % (func.__name__, cost)) return result return __wrapper
def debug(func): """ debug装饰器 """ @wraps(func) def __wrapper(*args, **kwargs): print('* ' * 55) print("[Debugging] >>>>> %s - args: %s, kwargs: %s" % (func.__name__, args, kwargs)) print('* ' * 55) return func(*args, **kwargs) return __wrapper
def deprecated(func): """ 方法过时提示 """ @wraps(func) def __wrapper(*args, **kwargs): warnings.warn("[%s] is deprecated and will be removed in future versions." % func.__name__, DeprecationWarning) return func(*args, **kwargs) return __wrapper
|