python的装饰器

作用:
    在不改变原来函数的代码情况下,进行修改,或者增加函数的功能
    装饰器本质上就是一个闭包

雏形:
    def  wrapper(fn):   wrapper: 装饰器 , fn: 目标函数
        def inner():
             # 在目标函数执行前的一些动作
             fn()
             # 在目标函数执行后的一些动作

        return inner   #千万别加(),这里是返回一个函数名。如果加(),表示返回函数执行的结果

    @wrapper
    def fn():   #目标函数    
        print("xxxxxxx")
   

功能:

    执行目标函数fn, 相当于执行了wrapper函数里闭包的inner函数过程
1. 装饰器方式一

def lunch(fuc):
    def inner():
        print("water hand")
        fuc()
        print("su kou")
    return inner


def eat():
    print("eat somethings")

lunch(eat) #这里返回是一个函数名inner,函数名在内存中指向一个地址
l = lunch(eat)  # l 和 inner 同时指向同一个内存地址
l()  #这里是执行inner函数体


#执行结果
water hand
eat somethings
su kou

2.装饰器方式二


def lunch(fuc):
    def inner():
        print("wa

你可能感兴趣的:(python,python,开发语言)