python装饰器原理

妙处在于装饰器的两个return

1.装饰器

# 使用闭包
def wrap(fun):
    def check():
        print("正在检查用户权限!")
        fun()
    return check

2.实现

@wrap
def fun():
    print("执行这条语句需要时间!")

3.原理

使用装饰器相当于执行了下面几项操作:
fun = wrap(fun) # wrap()的返回值check被fun引用,同时fun被check中引用。
fun() # 最终执行的是check,然后再check里面执行了原先fun放内容。

4.实例

def require_login(func):
    """
    需要登录
    session中检查是否存在已登录的用户
    """

    def wrapper(request, *args, **kv):
        login_user = request.session.get(constants.SESSION_LOGIN_USER)
        # 访问的路径
        # 没有登录,则跳转到
        if login_user is None:
            return unauthorized_response(request.is_ajax(),None)
        return func(request, *args, **kv)

    return wrapper
from **.decorators import require_login
@require_login
def order_mng(request):
    pass
上一篇:WebService注解总结


下一篇:#include