python装饰器不改变原函数属性,带参装饰器
def copy_properties(src,dst): # 提供一个函数,被封装函数属性 copy 到包装函数属性,保持被封装函数属性不变 dst.__name__=src.__name__ dst.__doc__=src.__doc__ dst.__qualname__=src.__qualname__ def logger(fn): def wrapper(*args,**kwargs): ‘i‘m wrapper‘ print(‘begin‘) kin=fn(*args,**kwargs) print(‘after‘) return kin copy_properties(fn,wrapper) return wrapper @logger def lag(x,y): ‘i‘m a function‘ return x+y print(‘name={} doc={}‘.format(lag.__name__,lag.__doc__))