Python装饰器根本写法
- 将上述流程进行了包装,就是装饰器
def outer(origin):
def inner():
# add code
res = origin()
# add code
return res
return inner
@outer
def func():
# code here
print("func")
return
- 被包装的函数的没有参数,可以轻松完成代码,如果有参数,如何处理
def outer(origin):
def inner(*args, **kwargs):
# add code
res = origin(*args, **kwargs)
# add code
return res
return inner
@outer
def func():
# code here
print("func")
return
func(123)
func(123, 456)
func(a = 5, b = 7)
- 装饰器是基于
@
语法与函数闭包来实现的效果 - 经过装饰器修饰过的函数就不再是原始定义的函数了,但调用时是看不出这种效果,给人一种还是在调用原始函数的效果