Python3装饰器
2019-08-03 21:28
88 查看
自定义装饰器
def fun(fn): # 自定义一个装饰器 def inner(): print("执行前...") # 在被装饰的函数前需要执行的操作 fn() # 调用被装饰的函数 print("执行后...") # 在被装饰的函数后需要执行的操作 return inner # 闭包 @fun # 用自定义的装饰器装函数 def test1(): print("test1") @fun # 用自定义的装饰器装函数 def test2(): print("test2") test1() print("=" * 20) test2()
输出结果。可看到在被装饰的函数执行时,在该函数执行前和执行后都可编写所需的处理代码
执行前... test1 执行后... ==================== 执行前... test2 执行后...
被调用的函数带参数及返回值的情况
def fun(fn): # 自定义一个装饰器 def inner(*args, **kwargs): # 传入被装饰函数的参数 print("执行前...") # 在被装饰的函数前需要执行的操作 ret = fn(*args, **kwargs) # 调用被装饰的函数 print("执行后...") # 在被装饰的函数后需要执行的操作 return ret # 返回被装饰函数的返回值 return inner # 闭包 @fun # 用自定义的装饰器装函数 def test1(val): print("test1 %s" % val) return "finsh1" @fun # 用自定义的装饰器装函数 def test2(val): print("test2 %s" % val) return "finsh2" print(test1('abc')) print("=" * 20) print(test2('xyz'))
执行结果
执行前... test1 abc 执行后... finsh1 ==================== 执行前... test2 xyz 执行后... finsh2