zoukankan      html  css  js  c++  java
  • 装饰器

    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
    # 在被装饰函数之后做的事,===
  • 相关阅读:
    C博客作业00—我的第一篇博客
    C语言博客作业03函数
    C语言博客作业05指针
    快速分页:jsp标签pagertaglib
    JSP与Servlet的编解码
    初探Hibernate3源码读取配置文件
    截取图片的某个部分(C#源代码)
    使用MATLAB获取视频中每一帧的图像
    Windows下较为精确的计时方法
    [转]向Windows Phone 7手机部署应用程序
  • 原文地址:https://www.cnblogs.com/chvv/p/9850832.html
Copyright © 2011-2022 走看看