【python3】装饰器 理解Python装饰器(Decorator)

 

 

参考文章:


关键点:

写装饰器一定要搞定楚函数名后面带小括号和不带小括号的含义。带小括号,表示调用这个函数,而不带小括号,则表示的是该函数引用地址

简单装饰器:

def a(func):
    def wrapper():
        print('in a')
        return func() #执行func函数中的代码
    return wrapper #返回wrapper函数的引用地址

@a #b=a(b) = wrapper的地址
def b():
    print('in b')

b()

 输出结果:

in a
in b

带参数的装饰器

def outer(args):
    def pri(func):
        def one():
            return func(args)
        return one
    return pri
@outer('hello')  # test=outer('hello')(test)
def test(args):
    return args

print(test())

输出结果:

hello