Python 装饰器用处

装饰器:外部函数传入被装饰函数名,内部函数返回装饰函数名。

特点:1. 不修改被装饰函数的调用方式 2. 不修改被装饰函数的源代码

多个装饰器装饰一个函数, 其执行顺序是从下往上。
装饰器不仅可以是函数,还可以是类,相比函数装饰器,类装饰器具有灵活度大、高内聚、封装性等优点。使用类装饰器主要依靠类的__call__方法,当使用 @ 形式将装饰器附加到函数上时,就会调用此方法。

下面的代码是一段flask框架里面的。

1:如果函数,index()和 admin(),没有加上 api_route 装饰器的话,那么他就是一个普通函数,而加上之后就变成了路由。
2:从中可以看出 index 是所有人都可以访问的。而 admin 需要验证后才可以访问。

#!/usr/bin/env Python3
__author__ = '未昔/angelfate'
__date__ = '2019/7/21 17:26'
# -*- coding: utf-8 -*-
from flask import Blueprint,request
from common.libs.Helper import ops_render
api_route = Blueprint( 'index_page',__name__ )  # 入口文件


@api_route.route('/index', methods=['GET'])

def index():
    req = request.values
    name = req['name'] if 'name' in req else ''

    resp_data = {}
    resp = {'code': 200, 'msg': u"success", 'data': {}}

    return ops_render("index.html", resp_data)

@api_route.route('/admin', methods=['GET','POST'])
@auth.login_required  # 需要验证登录
def admin():
    if request.method == "GET":
        return ops_render("login.html")

    req = request.values
    pass