def logger(func):def wrapper():print('logging execution')func()print('Done logging')return wrapper@loggerdef sample():print('-- Inside sample function')sample()#结果logging execution-- Inside sample functionDone logging
简述:
#funA 作为装饰器函数def funA(fn):...fn() # 执行传入的fn参数...return '...'@funAdef funB():...实际上,上面程序完全等价于下面的程序:def funA(fn):...fn() # 执行传入的fn参数...return '...'def funB():...funB = funA(funB)通过比对以上 2 段程序不难发现,使用函数装饰器 A() 去装饰另一个函数 B(),其底层执行了如下 2 步操作:将 B 作为参数传给 A() 函数;将 A() 函数执行完成的返回值反馈回 B
