一个理解装饰器很好的例子

一个理解装饰器很好的例子一个理解装饰器很好的例子一个理解装饰器很好的例子一个理解装饰器很好的例子啥也不说了,直接看图:

一个理解装饰器很好的例子

一个理解装饰器很好的例子一个理解装饰器很好的例子一个理解装饰器很好的例子一个理解装饰器很好的例子另外符文函数学习内容:

#把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()