python 装饰器
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()

浙公网安备 33010602011771号