1***装饰器。
装饰器基本模板:
def warpar(args): def dinner(*args,**kwargs): #想添加的任何内容 ret= args(*args,**kwargs) #想添加的任何内容 return ret return dinner func = warpar(func) def func(): print('你好~~')#装饰器在不改变原函数的执行的情况下为原函数增加额外的功能
#装饰器在不改变原函数的执行的情况下为原函数增加额外的功能
2.语法糖@
利用模板套用之后再需要装饰的函数之上输入@装饰器名
def warpar(args): def dinner(*args,**kwargs): #想添加的任何内容 ret= args(*args,**kwargs) #想添加的任何内容 return ret return dinner @warpar #相当与func = warpar(func) def func(): print('你好~~')
3.函数有用的信息:
为函数标注其功能和返回值:
from functools import wraps def warpper(f): @wraps def inner(): '''函数执行之前的操作''' ret = f() '''函数执行之后的操作''' return ret return inner def fun(): ''' 这个函数的功能是***,参数分别是888,888,其返回值是 :return: ''' print(fun.__name__) print(fun.__doc__) #直接显示函数的注释
4.多个装饰器装饰一个函数:
从上之下再从下至上
def func1(f): #f = func def inner(): print('3333') ret = f() #f() = func() print('4444') return ret return inner def func2(f): #f = inner def inner2(): print('2222') ret = f() #f = inner() print('5555') return ret return inner2 def func3(f): #f = inner2 def inner3(): print('1111')# 执行函数前的操作 ret = f() #f = inner2 print('6666') return ret return inner3 @func3 @func2 @func1 def func(): print('谁是傻逼') func()