测试环境:Python3.6.2 + win10 + Pycharm2017.3
装饰器之functools模块的wraps的用途:
首先我们先写一个装饰器
# 探索functools模块wraps装饰器的用途 from functools import wraps def trace(func): """ 装饰器 """ # @wraps(func) def callf(*args, **kwargs): """ A wrapper function """ print("Calling function:{}".format(func.__name__)) # Calling function:foo res = func(*args, **kwargs) print("Return value:{}".format(res)) # Return value:9 return res return callf @trace def foo(x): """ 返回给定数字的平方 """ return x * x if __name__ == '__main__': print(foo(3)) # 9 print(foo.__doc__) help(foo) print(foo.__name__) # print(foo.__globals__) t = trace(foo) print(t) 打印结果: Calling function:foo Return value:9 9 A wrapper function Help on function callf in module __main__: callf(*args, **kwargs) A wrapper function callf <function trace.<locals>.callf at 0x0000022F744D8730>