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

    一:

    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")
  • 相关阅读:
    bootstrap的验证和确认对话框
    Jquery.Datatables 基本创建方法
    DOM – (w3school)1.DOM 方法 + 2.DOM属性 + 3.DOM 元素
    Jquery.Datatables 基本设置的中文注解
    修改android studio中的avd sdk路径、avd sdk找不到的解决方案
    一个人至少是需要学习3种语言的
    Framework7:不会Objective-C,也能开发iOS7应用
    私人定制,十款最佳Node.js MVC框架
    PHP开发框架流行度排名:Laravel居首
    仅用移动开发服务:开发native应用
  • 原文地址:https://www.cnblogs.com/LL97155472/p/10583610.html
Copyright © 2011-2022 走看看