孤坟丶

导航

 

一:

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")
posted on 2019-03-23 13:30  孤坟丶  阅读(95)  评论(0编辑  收藏  举报