5分钟学会 Python 装饰器(2)

def f1(flag=1):
    def outer(func):
        def inner(*args, **kwargs):
            if (flag == 2):
                print("______%d" % flag)
                ret = func(*args, **kwargs)
            else:
                print("______%d" % flag)
                ret = func(*args, **kwargs)
            return ret
        return inner
    return outer

@f1(2)
def test(a):
    return a ** 2

print(test(3))

#输出结果
______2
9

当当需要通过不同参数判断装饰器该实现的不同结果时,带参数的装饰器就出现了,如上所示,在装饰器最外层在嵌套一个函数用与接收参数,通过第 4 行判断参数选择相应的功能

下面说说 14行  的执行流程  1)@f1(2) --> f1(2)  执行 f1函数并传值 2 ;  2)f1 函数返回 outer --->@outer;3)@outer --> test = outer(test)

以上就是我对装饰器的一些个人理解了。

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/06d76a1ad10cd4b231221ba54a714668.html