装饰器的实现

装饰器

在flask框架里面,通过装饰器传参实现动态创建字典,来完成路由的功能

def set_value(value):
    def set_fun(func):
        def call_fun(*args,**kwargs):
            print("2019",value)
            return func(*args,**kwargs)
        return call_fun
    return set_fun

# 分为两步
# 先执行set_value,获得闭包的引用
# 在执行@闭包的引用
# func获得装饰前test函数的引用
# 装饰后test获得了call_fun函数的引用
@set_value("年")
def test():
    print("test")

test()

装饰器传参的功能一般很少用到,也很少见到,当然在各种框架里面应该比较常见,装饰器传参的实现其实也很简单,就是在装饰器的外面在包裹一层函数,当调用最外层函数的时候会返回内层闭包的引用(也可以说是装饰器的引用)

猜你喜欢

转载自blog.csdn.net/weixin_38644677/article/details/87865976