• 装饰器


    def auth(func):  #func为被装饰的函数

    def inner(*args,**kwargs):
    print("前")
    ret = func(*args,**kwargs)
    print("后")
    return ret
    return inner

    @auth
    def index():
    print("index")

    @auth
    def detail():
    print("detail")
    return "xxxxx"

    print(index.__name__) #打印的函数名为inner
    print(detail.__name__) #打印的函数名为inner

    print(index()) #打印结果为 前 index 后 None index函数中没有return返回None
    print(detail()) #打印结果为 前 detail 后 xxxxx 有return也要返回return的值
    from functools import wraps
    def check_user(func):
        print("---1---")
        @wraps(func)
        def inner(*args,**kwargs):
            print("在被装饰函数之前做的事,判断等")
            ret = func(*args,**kwargs)
            print("在被装饰函数之后做的事,判断等")
            return ret
        return inner
    
    @check_user
    def test1():
        print("123456789")
        return "你好呀"
    
    test1()
    
    # ---1---
    # 在被装饰函数之前做的事,判断等
    # 123456789
    # 在被装饰函数之后做的事,判断等
    from functools import wraps
    def check_user(func):
        print("---1---")
        @wraps(func)
        def inner(*args,**kwargs):
            print("在被装饰函数之前做的事,判断user等")
            ret = func(*args,**kwargs)
            print("在被装饰函数之后做的事,===")
            return ret
        return inner
    
    def check_token(func):
        print("---2---")
        @wraps(func)
        def inner(*args,**kwargs):
            print("在被装饰函数之前做的事,判断token等")
            ret = func(*args,**kwargs)
            print("在被装饰函数之后做的事,xxxx")
            return ret
        return inner
    
    @check_user
    @check_token
    def test1():
        print("123456789")
        return "你好呀"
    
    test1()
    
    # ---2---
    # ---1---
    # 在被装饰函数之前做的事,判断user等
    # 在被装饰函数之前做的事,判断token等
    # 123456789
    # 在被装饰函数之后做的事,xxxx
    # 在被装饰函数之后做的事,===
  • 相关阅读:
    WordPress伪静态配置
    微信支付后默认关注公众号
    微信公众号中点击A标签嵌套的img
    全站变灰
    人人商城团队初始化
    Map-T
    处理Hbuilder H5页面打包APP 返回直接退出的问题
    ES6:搭建前端环境
    ES6:简介
    jQuery: 案例
  • 原文地址:https://www.cnblogs.com/chvv/p/9850832.html
Copyright © 2020-2023  润新知