首页 > 其他 > 详细

有关装饰器

时间:2019-03-23 13:41:01      阅读:114      评论:0      收藏:0      [点我收藏+]

一:

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")

有关装饰器

原文:https://www.cnblogs.com/LL97155472/p/10583610.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!