装饰器,主要用途是在不改变原函数的基础上,添加新的功能。
装饰器可以传递多个函数参数,一个函数可以使用多个装饰器。
# 装饰器,在用户身份认证中用的较多 def outer_0(func): ''' 一个装饰器 :param func: 将需要装饰的函数作为参数func传递进来,可以是已经经过装饰的函数 :return: 将本装饰器的返回值赋值给作为func传递进来的函数 ''' def inner(*args,**kwargs): #使用*args和**kwargs,python自动检测并对应函数参数,不许考虑函数个数及类型 print('woooo!') r = func(*args,**kwargs) return r return inner def outer(func): ''' 另一个装饰器,一个函数可以同时使用多个装饰器 :param func: 将需要装饰的函数作为参数func传递进来 :return: 将本装饰器的返回值赋值给作为func传递进来的函数 ''' def inner(*args,**kwargs): print('hi') r = func(*args,**kwargs) print('ooo') return r return inner #下面函数经过双重装饰器,先@outer函数装饰,再outer_0函数装饰 @outer_0 #将下面@outer装饰器的inner作为outer_0的参数,返回值给inner再给f @outer #将下面f函数作为@outer装饰器的参数,返回值给f def f(a): print('nihao!',a) r = f('lll') print(r)
浙公网安备 33010602011771号