• 有关装饰器


    一:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #----------无参装饰器记忆格式------
    def wrapper(func):
        def inner(*args,**kwargs):
     
            res=func(*args,**kwargs)
     
            return res
        return inner
     
    #---------有参装饰器记忆格式-------
    def outer(flag):
        def func(t):
            if flag:
                def inner(*arg, **kwargs):
     
                    res=t(*arg, **kwargs)
                     
                    return res
                return inner
            else:
                return t
        return func

    二:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    # -------无参装饰器标准姿势-------
    def wrapper(func):
        def inner(*args,**kwargs):  #它就是在运行funct(*args,**kwargs),
                        #此处加上新的功能
            res =  func(*args,**kwargs)#此时真正的fanc被放到这里运行了,
                        #此处加上新的功能
            return res
        return inner    #返回inner,此时inner=func,所以
    @wrapper#  先进行wrapper(func)函数运行,return值给func,相当于func=inner(return值)
    def func():
        print("func")
     
    # ------有参装饰器标准姿势-----
    def outer(flag):        #根据参数flag的情况判断执行内部的功能
        def func(t):
            if flag:    #如果flag为true执行下面添加新功能的用户真正想执行的t函数
                def inner(*arg, **kwargs):
                    #添加新功能
                    res=t(*arg, **kwargs)  # ==>func()
                    #添加新功能
                    return res #将添加性功能的函数返回给用户
                return inner
            else:       #如果flag为false执行下面
                return 888
        return func
     
    @outer(flag=True)       #此处先执行这个叫outer(flag=Ture)这个函数(与装饰器无关),得到的值才是真正的装饰器
    def t():
        print("t")
  • 相关阅读:
    layDate 只显示 小时&分钟
    获取从今天以后一周的日期列表
    Laravel_$rules参数规则
    Layui——分步表单
    XML命名空间详解
    centos7搭建svn服务器
    jvm原理
    动态代理与反射
    java之JUC
    实现从数据库加载数据并返回easyui-tree所需要数据
  • 原文地址:https://www.cnblogs.com/LL97155472/p/10583610.html
Copyright © 2020-2023  润新知