python 学习 各个击破之 装饰器

学习笔记,装饰器,decorate,本文参考python 参考手册

装饰器
函数、方法或这类定义的前面可以使用一个特殊的符号,称之为装饰器,其目的是修改定以后面的行为。装饰器使用@符号表示,必须放在单独的行上、并且位于对应的函数、方法或类之前,例如:

@foo
def bar():
    pass

装饰器可以重叠使用,但每个装饰器必须另起一行

@foo
@bar
def spam():
    pass

那!我们可以自己定义一个装饰器,用于完成每个方法前都预先执行的操作,在flask里,一般的用与权限管理,用户登陆的检查,或者一些自己想干的一些事情
如下:

def set_count(f):
    @wraps(f)
    def req(*args, **kwargs):
        //todo:你想做的事情,就在这里搞定
        return f(*args, **kwargs)

    return req

1、def setcount(f) 这一行用于定义一个装饰器方法,它接受一个函数作为参数
2、@wraps(f) 这一行 表示不改变使用装饰器原有函数的结构(如name,_doc

3、def req(args,*kwargs) 表示支持任意的参数
4、return req 返回 装饰器函数
‘注意,代码缩进’


参考文献
1、https://blog.csdn.net/Refrain__WG/article/details/81013374
2、python参考手册 第四版

相关文章