# 装饰器是一个高阶函数 |
def copy_properties(src): |
def _copy(dst): |
dst.__name__ = src.__name__ |
dst.__doc__ = src.__doc__ |
dst.__qualname__ = src.__qualname__ |
return dst |
return _copy |
def logger(fn): |
@copy_properties (fn) # @_copy wrapper = _copy(wrapper) |
def wrapper( * args, * * kwargs): |
"""this is wrapper""" |
print ( 'before' ) |
ret = fn( * args, * * kwargs) |
print ( 'after' ) |
return ret |
# copy_properties(fn, wrapper) |
return wrapper |
@logger |
def add(x,y): |
""" |
This is a function of addition |
return int |
x int |
y int |
""" |
a = x + y |
return a |
print (add.__doc__,add.__name__,add.__qualname__,sep = '\n' ) |
# print(help(add)) |