- 抽象的理解:功能补充
装饰器是对一个函数,类或者子类功能的补充。类似于给手机套一个壳,壳并不影响手机的正常功能的使用,但是却额外扩展了手机防摔的功能,装饰器也是类似,她不会改变原有函数和类的功能,但是却可以对原有的函数或者类进行包装,使之功能得到扩展。 - 理解的关键点:函数也是一种对象
因为函数也是一种对象,所以函数可以;- 作为参数被传递进去
- 作为返回值被返回
- 赋值给变量
- 嵌套定义函数(返回一个内部函数)
- 内联函数调用外部变量(闭包)
- 装饰器:
def div_dec(func):
def func_wrapper(saying):
return "<div>{}<div>".format(func(saying))
return func_wrapper
@div_dec
def say_something(context):
return "python print something like {}".format(context)
print(say_something("take a try"))
输出内容
<div>python print something like take a try<div>
上面装饰器中的参数func就是下面的具体修饰的函数(用到上面的第一点:函数作为参数),最后返回的func_wrapper是真正的返回值(用到上面的第一点:函数作为返回值),这个返回的函数还会继续执行函数体,然后再返回最终值