python decorator to print return values
这个问题与Python3有关。有没有一种方法可以让装饰器将返回值打印到任何函数?这个问题修饰器打印函数调用的详细信息-参数名和有效值将打印您传递给函数的所有值。有没有一种方法可以让一个decorator打印函数返回的值,而不管它返回的是单个值还是多个值?
如果你要运行这个:
1 | multiply(subtract(add(1,2),add(3,4)),9) |
所有的函数都用@superecho修饰,它将记录:
1 2 3 4 5 6 7 8 | function call add() 1,2 function add() returns 3 function call add() 3,4 function add() returns 7 function call subtract() 3 7 function subtract() returns -4 function call multiply() -4 9 function multiply() returns -36 |
号
1 2 3 4 5 6 7 8 9 10 | def monitor_results(func): def print(*args): customprinter.print(*args) def wrapper(*func_args, **func_kwargs): print('function call ' + func.__name__ + '()') retval = func(*func_args,**func_kwargs) print('function ' + func.__name__ + '() returns ' + repr(retval)) return retval wrapper.__name__ = func.__name__ return wrapper |
号
这个适合你的需要吗?
1 2 3 4 | def describeFuncRet(func): def wrapper(*func_args, **func_kwargs): print(func(*func_args,**func_kwargs)) return wrapper |