defw_test(func): definner(): print('w_test inner called start') str = func() print('w_test inner called end') returnstr return inner @w_test deftest(): print('this is test fun') return'hello' ret = test() print('ret value is %s' % ret) """ 输出: w_test inner called start this is test fun w_test inner called end ret value is hello """
2.5 带有参数的装饰器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
deffunc_args(pre='xiaoqiang'): defw_test_log(func): definner(): print('...记录日志...visitor is %s' % pre) func() return inner return w_test_log # 带有参数的装饰器能够起到在运行时,有不同的功能 # 先执行func_args('wangcai'),返回w_test_log函数的引用 # @w_test_log # 使用@w_test_log对test_log进行装饰 @func_args('wangcai') deftest_log(): print('this is test log') test_log()