一个理解装饰器很好的例子
啥也不说了,直接看图:
另外符文函数学习内容:
#把foo1看成一个变量,指向函数对象 def foo1(num): return num+1 print (foo1(3)) #foo2指向另外一个函数 def bar(): return 'Bar' foo2=bar print (foo2()) #函数作为返回值 def foo3(): return 2 def bar2(): return foo3 print (bar2()()) #等价于 print (foo3()) #函数作为参数 def foo4(num): return num+1 def bar3(fun): return fun(3) value=bar3(foo4) print (value) #函数的嵌套 def outer(): x=1 def inner(): print(x) inner() outer() #闭合包 def outer(x): def inner(): print (x) return inner closure=outer(1) closure() #装饰器 def outer(func): def inner(): print('记录日志开始') func() print('记录日志结束') return inner @outer def foo5(): print('执行函数foo5') #没有修改foo5函数的任何逻辑,只是给foo5变量重新赋值了,指向了一个新的函数对象。最后调用foo5不仅能打印日志,业务逻辑也执行完了。这里的outer函数其实就是一个装饰器。 #foo5=outer(foo5) foo5()