标准装饰器模板直接上代码
import datetime
import time
from datetime import datetime as dt
from functools import wraps
def logger(fn):
@wraps(fn) #调用wraps装饰器来替换属性
def wrapper(*args, **kwargs):
timenow = datetime.datetime.now()
print('now calling function {}'.format(fn.__name__))
ret = fn(*args, **kwargs)
timenew = datetime.datetime.now() - timenow
print('function {} called,\nfunc_doc = {},\ntooks {} seconds'.format(fn.__name__, fn.__doc__, timenew))
return ret
return wrapper
@logger
def add(x, y):
"""this is a function for caculate a number's pow"""
time.sleep(1)
return x**y
也可以先将add函数进行柯里化
如果不知道什么是柯里化,请点击
def add(x):
"""this is a function for caculate a number's pow"""
def add_(y):
time.sleep(1)
return x**y
return add_