- 装饰器也是个函数
- 装饰器有参数,参数是函数
- 装饰器有内嵌函数
- 装饰器有返回值,返回值是内嵌函数
- 装饰器使用时直接挂在被装饰还是上方@装饰器名 注意名字别错了
- 被装饰函数如果带返回值,内嵌函数需要做返回
- 被装饰函数如果有参数,内嵌函数要有参数args,作参数的函数同样要有args
#最简单的装饰器函数
def decorator(func):
def wrap(): #嵌套wrap函数
print('process1......')
func()
return wrap #注意return的层级
@decorator #装饰器做关联
def func():
print('func')
#执行
func()
>>> process1......
func
#被装饰函数带返回值的
def decorator():
def wrap():
print('process1......')
val=func()
return val
return wrap
@decorator
def func():
return 'value'
#执行
func()
>>> process1.......
value
#带参数的
def decorator(func):
def wrap(*args):#这里*args代表多个参数
print('process1......')
val=func(*args)#*args
return val
return wrap
@decorator
def func(x:int)->int:
return x+1
#执行
func(2)
>>> process1.....
3
网友评论